]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Mon, 6 May 2013 14:04:13 +0000 (14:04 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Mon, 6 May 2013 14:04:13 +0000 (14:04 +0000)
MagickCore/gem.c

index 14d7d795c52df8a6a566c5a97c597d17bd345508..3ae8979b0a77eb18da1ccc32e3178ffdd241ef3c 100644 (file)
@@ -1339,10 +1339,12 @@ static inline void ConvertXYZToLCHab(const double X,const double Y,
     b;
 
   ConvertXYZToLab(X,Y,Z,luma,&a,&b);
-  *chroma=hypot(a,b);
-  *hue=180.0*atan2(b,a)/MagickPI;
+  *chroma=hypot(255.0*(a-0.5),255.0*(b-0.5));
+  *hue=180.0*atan2(255.0*(b-0.5),255.0*(a-0.5))/MagickPI;
   if (*hue < 0.0)
     *hue+=360.0;
+  *chroma=(*chroma)/255.0+0.5;
+  *hue=(*hue)/255.0+0.5;
 }
 
 MagickPrivate void ConvertRGBToLCHab(const double red,const double green,
@@ -1396,14 +1398,16 @@ static inline void ConvertXYZToLCHuv(const double X,const double Y,
   const double Z,double *luma,double *chroma,double *hue)
 {
   double
-    a,
-    b;
+    u,
+    v;
 
-  ConvertXYZToLab(X,Y,Z,luma,&a,&b);
-  *chroma=hypot(a,b);
-  *hue=180.0*atan2(b,a)/MagickPI;
+  ConvertXYZToLuv(X,Y,Z,luma,&u,&v);
+  *chroma=hypot(354.0*u-134.0,262.0*v-140.0);
+  *hue=180.0*atan2(262.0*v-140.0,354.0*u-134.0)/MagickPI;
   if (*hue < 0.0)
     *hue+=360.0;
+  *chroma=(*chroma+134.0)/354.0;
+  *hue=(*hue+140.0)/262.0;
 }
 
 MagickPrivate void ConvertRGBToLCHuv(const double red,const double green,