uint32 BaseUtils::HSLtoRGB(byte InH, byte InS, byte InL) { float H = InH / 255.0f; float S = InS / 255.0f; float L = InL / 255.0f; byte R, G, B; if (S == 0) { R = (byte)(L * 255); G = (byte)(L * 255); B = (byte)(L * 255); } else { float var1, var2; if (L < 0.5) { var2 = L * (1.0 + S); } else { var2 = (L + S) - (S * L); } var1 = 2.0f * L - var2; R = (byte)(255 * Hue2RGB(var1, var2, H + (1.0f / 3.0f))); G = (byte)(255 * Hue2RGB(var1, var2, H)); B = (byte)(255 * Hue2RGB(var1, var2, H - (1.0f / 3.0f))); } return BYTETORGBA(255, R, G, B); }
DWORD CBUtils::HSLtoRGB(BYTE InH, BYTE InS, BYTE InL) { float H = InH / 255.0f; float S = InS / 255.0f; float L = InL / 255.0f; BYTE R, G, B; if ( S == 0 ) { R = L * 255; G = L * 255; B = L * 255; } else { float var_1, var_2; if(L < 0.5) var_2 = L * (1.0 + S); else var_2 = (L + S) - (S * L); var_1 = 2.0f * L - var_2; R = 255 * Hue2RGB(var_1, var_2, H + (1.0f / 3.0f)); G = 255 * Hue2RGB(var_1, var_2, H); B = 255 * Hue2RGB(var_1, var_2, H - (1.0f / 3.0f)); } return DRGBA(255, R, G, B); }