예제 #1
0
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);
}
예제 #2
0
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);
}