В очередном обсуждении убогости UI сайта и возможности самому нарулить цвета сайта скинули мне интересную ссылку.
Спасибо, Lasto4ka, за лютый трэш. Такой убогой имплементации я давно не видел. В js версии, к примеру, уже пять лет висит опечатка два раза вызывающая одну и туже функцию и всем пофиг.
Переходя к сути, хотелось мне решить задачу выбора цыета текста относительно фона. Притом не дать пользователю нарулить вырвиглазное нечто. Тобишь создать нечто наподобие этого, только применимо у xgm.
Погуглив, оказалось, что это задача настолько лёгкая, что по этой теме ничерта готового не сыщеш. Приходится изобретать велосипеды.
Самый популярный подход это перевести цвет в HSL и в зависимости от L установить белый или чёрный цвет. Но это скучно.
Посему я тупо переписал hsluv по человечески и реализовал простой как палка алгоритм: L += L > 50 ? -50 : 50;
Который генерит пару с контрастом в районе 4 что в принципе терпимо и читаемо.