MagickExport void ConvertHSLToRGB(const double hue,const double saturation, const double lightness,Quantum *red,Quantum *green,Quantum *blue) { MagickRealType b, g, r, m1, m2; /* Convert HSL to RGB colorspace. */ assert(red != (Quantum *) NULL); assert(green != (Quantum *) NULL); assert(blue != (Quantum *) NULL); if (saturation == 0) { *red=ClampToQuantum((MagickRealType) QuantumRange*lightness); *green=(*red); *blue=(*red); return; } if (lightness < 0.5) m2=lightness*(saturation+1.0); else m2=(lightness+saturation)-(lightness*saturation); m1=2.0*lightness-m2; r=ConvertHueToRGB(m1,m2,hue+1.0/3.0); g=ConvertHueToRGB(m1,m2,hue); b=ConvertHueToRGB(m1,m2,hue-1.0/3.0); *red=ClampToQuantum((MagickRealType) QuantumRange*r); *green=ClampToQuantum((MagickRealType) QuantumRange*g); *blue=ClampToQuantum((MagickRealType) QuantumRange*b); }
MagickExport void ConvertHSLToRGB(const double hue,const double saturation, const double lightness,double *red,double *green,double *blue) { double b, g, r, m1, m2; /* Convert HSL to RGB colorspace. */ assert(red != (double *) NULL); assert(green != (double *) NULL); assert(blue != (double *) NULL); if (saturation == 0) { *red=QuantumRange*lightness; *green=(*red); *blue=(*red); return; } if (lightness < 0.5) m2=lightness*(saturation+1.0); else m2=(lightness+saturation)-(lightness*saturation); m1=2.0*lightness-m2; r=ConvertHueToRGB(m1,m2,hue+1.0/3.0); g=ConvertHueToRGB(m1,m2,hue); b=ConvertHueToRGB(m1,m2,hue-1.0/3.0); *red=QuantumRange*r; *green=QuantumRange*g; *blue=QuantumRange*b; }