//--------------------------------------------------------------------------- #include "ColorSpacesConversions.h" #define max(a,b) (a>b?a:b) #define min(a,b) (a1) fH-=1; } iH=(unsigned char)(fH*255); iS=(unsigned char)(fS*255); iL=(unsigned char)(fL*255); cHSL[0]=iH; cHSL[1]=iS; cHSL[2]=iL; } float SubFunForRGBfromHSL(float v1,float v2,float v3) { float vH=v3; if(vH<0) vH+=1; if(vH>1) vH-=1; if((6*vH)<1.0) return v1+(v2-v1)*6*vH; if((2*vH)<1) return v2; if((3*vH)<2.0) return v1+(v2-v1)*((2.0/3)-vH)*6; return v1; } void RGBfromHSL(unsigned char* cRGB,unsigned char* cHSL) { unsigned char iH=cHSL[0]; unsigned char iS=cHSL[1]; unsigned char iL=cHSL[2]; float fH = ((float)iH)/255; float fS = ((float)iS)/255; float fL = ((float)iL)/255; float v1,v2; float fR,fG,fB; char iR,iG,iB; if(fS==0) { fR=fL; fG=fL; fB=fL; } else { if (fL<0.5) v2=fL*(1.0+fS); else v2=(fL+fS)-(fS*fL); v1=2*fL-v2; fR=SubFunForRGBfromHSL(v1,v2,fH+(1.0/3)); fG=SubFunForRGBfromHSL(v1,v2,fH); fB=SubFunForRGBfromHSL(v1,v2,fH-(1.0/3)); } iR=(unsigned char)(fR*255); iG=(unsigned char)(fG*255); iB=(unsigned char)(fB*255); cRGB[0]=iR; cRGB[1]=iG; cRGB[2]=iB; } //---------------------------------------------------------------------------