COLORREF HLS_TRANSFORM (COLORREF rgb, int percent_L, int percent_S) { HLSCOLOR hls = RGB2HLS (rgb); BYTE h = HLS_H(hls); BYTE l = HLS_L(hls); BYTE s = HLS_S(hls); if ( percent_L > 0 ) { l = BYTE(l + ((255 - l) * percent_L) / 100); } else if ( percent_L < 0 ) { l = BYTE((l * (100+percent_L)) / 100); } if ( percent_S > 0 ) { s = BYTE(s + ((255 - s) * percent_S) / 100); } else if ( percent_S < 0 ) { s = BYTE((s * (100+percent_S)) / 100); } return HLS2RGB (HLS(h, l, s)); }
COLORREF OperaColors::TextFromBackground(COLORREF bg) { HLSTRIPLE hlst = RGB2HLS(bg); if (hlst.hlstLightness > 0.63) return RGB(0, 0, 0); else return RGB(255, 255, 255); }