Exemplo n.º 1
0
inline vec3 HslToRgb(vec3 In)
{
	float v1, v2;
	vec3 Out;

	if(In.s == 0)
	{
		Out.r = In.l;
		Out.g = In.l;
		Out.b = In.l;
	}
	else
	{
		if(In.l < 0.5f) 
			v2 = In.l * (1 + In.s);
		else           
			v2 = (In.l+In.s) - (In.s*In.l);

		v1 = 2 * In.l - v2;

		Out.r = HueToRgb(v1, v2, In.h + (1.0f/3.0f));
		Out.g = HueToRgb(v1, v2, In.h);
		Out.b = HueToRgb(v1, v2, In.h - (1.0f/3.0f));
	} 

	return Out;
}
Exemplo n.º 2
0
/**
   Auxilliary function for TestCaseID tbrdrcol-DrawColorCubeBackgroundNow
  
   This method converts a HSL colour to TRgb format.
  
 */
TRgb ColorConverter::HslToRgb(THsl aHsl)
	{
	TInt r, g, b;
	TInt m1, m2;
	
	const TInt hue = aHsl.Hue();
	const TInt sat = aHsl.Saturation();
	const TInt lum = aHsl.Lumen();
	
	if (sat==0) 
		{
		r=g=b=lum;
		} 
	else 
		{
		if (lum<=(255/2))
			{
			m2=lum*(255+sat)/255;
			}
		else
			{
			m2=lum+sat-(lum*sat/255);
			}
		
		m1=2*lum-m2;
		
		r = HueToRgb(m1, m2, hue+255/3 );
		g = HueToRgb(m1, m2, hue );
		b = HueToRgb(m1, m2, hue-255/3 );
		}
	
	return TRgb(r, g, b);
	}
Exemplo n.º 3
0
inline vec3 HslToRgb(vec3 HSL)
{
	if(HSL.s == 0.0f)
		return vec3(HSL.l, HSL.l, HSL.l);
	else
	{
		float v2 = HSL.l < 0.5f ? HSL.l * (1.0f + HSL.s) : (HSL.l+HSL.s) - (HSL.s*HSL.l);
		float v1 = 2.0f * HSL.l - v2;

		return vec3(HueToRgb(v1, v2, HSL.h + (1.0f/3.0f)), HueToRgb(v1, v2, HSL.h), HueToRgb(v1, v2, HSL.h - (1.0f/3.0f)));
	}
}