Я бы определил некоторые alpha = 0.2
и сделал бы:
given gray #777777
make redder with:
new red = 77 * (1.0 + alpha)
new green = blue = 77 * (1.0 - alpha)
На самом деле вы должны быть осторожны и обязательно обрезать (1 + альфа) и (1 - альфа) так, чтобы вы использовали значения только от 0 до 1,0.
Используйте Math.min (0,0, 1,0 - альфа) вместо (1,0 - альфа) и Math.max (1,0, 1,0 + альфа) вместо (1,0 + альфа).
С этой формулой, если вам дают черный (# 000000), он остается черным. Если вам дают белый (#FFFFFF), он заканчивается розовым (#FFCCCC). Если вы установите альфа = 1,0, белый цвет станет чистым красным (# FF0000).
Вы могли бы придумать разные формулы цветового масштабирования, но я думаю, вы должны убедиться, что ваше преобразование всегда сохраняет черный цвет как чистый черный.