/*
Increase or decrease color luma, chroma, or hue.
*/
- ConvertRGBToLCHab(*red,*green,*blue,&luma,&chroma,&hue);
+ ConvertRGBToLCHuv(*red,*green,*blue,&luma,&chroma,&hue);
luma*=0.01*percent_luma;
chroma*=0.01*percent_chroma;
hue+=0.5*(0.01*percent_hue-1.0);
hue+=1.0;
while (hue >= 1.0)
hue-=1.0;
- ConvertLCHabToRGB(luma,chroma,hue,red,green,blue);
+ ConvertLCHuvToRGB(luma,chroma,hue,red,green,blue);
}
MagickExport MagickBooleanType ModulateImage(Image *image,const char *modulate,
break;
}
case LCHColorspace:
- case LCHabColorspace:
+ case LCHuvColorspace:
{
ModulateLCH(percent_brightness,percent_saturation,percent_hue,
&red,&green,&blue);
break;
}
case LCHColorspace:
- case LCHabColorspace:
+ case LCHuvColorspace:
{
ModulateLCH(percent_brightness,percent_saturation,percent_hue,
&red,&green,&blue);
L=luma;
C=chroma;
H=hue;
- u=C*cos(360.0*H*MagickPI/180.0)+0.5;
- v=C*sin(360.0*H*MagickPI/180.0)+0.5;
+ u=C*cos(360.0*H*MagickPI/180.0)+134.0/354.0;
+ v=C*sin(360.0*H*MagickPI/180.0)+140.0/262.0;
ConvertLuvToXYZ(L,u,v,&X,&Y,&Z);
ConvertXYZToRGB(X,Y,Z,red,green,blue);
}
assert(hue != (double *) NULL);
ConvertRGBToXYZ(red,green,blue,&X,&Y,&Z);
ConvertXYZToLuv(X,Y,Z,&L,&u,&v);
- C=hypot(u-0.5,v-0.5);
- H=180.0*atan2(v-0.5,u-0.5)/MagickPI/360.0;
+ C=hypot(u-134.0/254.0,v-140.0/262.0);
+ H=180.0*atan2(v-140.0/262.0,u-134.0/254.0)/MagickPI/360.0;
if (H < 0.0)
H+=1.0;
if (H >= 1.0)