- 1
- 2
if (l > 0) l += (1 - l) * l;
else if (l < 0) l *= 1 - (- l);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+156
if (l > 0) l += (1 - l) * l;
else if (l < 0) l *= 1 - (- l);
А почему не просто 1 + l?
"5" - (-3) = 2
Где-то уже я об этом писал.
a*1 + b*1
parseInt(a) + parseInt(b)
а 3+"5" прокатит?
P.S. И откуда минусы в HSL?
Первая строка - оригинальное значение.
Вторая строка - результат в зависимости от модификатора.
Хмм... а где тут модификатор? Я в коде вижу только l.
Все-таки интересно, в чем прикладной смысл этого преобразования?
Рабочий код выглядит так:
Что уже не так круто)
> 0 - делаем ярче
< 0 - делаем темнее
Прикладной смысл такой.
Есть глобальный цвет, и в разных местах приложения используются оттенки этого цвета. Оттенки получаются путем преобразования глобального цвета.
А преобразование происходит путем увеличения или уменьшения каналов Saturation и Lightness с помощью модификатора.
Я не использую простое смещение на определенное количество в большую или в меньшую сторону, потому что разница в цветах приложения может быть до 50%, и получается ситуация, когда часть цветов уперлась в конец(>1) канала, а часть еще может меняется, и это очень не красиво.
Поэтому вместо смещения я использую модификатор, который увеличивает или уменьшает канал в процентах от возможного смещения от оригинала, и получается очень круто.
Спойлер: http://i.imgur.com/60ZesjC.png