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

index 0953aba666cbaccf276fee59f81c5d64c6459832..a30b3c63d7cbd04767f17a71c2d9b6dc1c2394b3 100644 (file)
@@ -150,6 +150,7 @@ static inline void ConvertXYZToLab(const double X,const double Y,const double Z,
     x,
     y,
     z;
+
   assert(L != (double *) NULL);
   assert(a != (double *) NULL);
   assert(b != (double *) NULL);
index 3866087cb1d291178cdc897800ce1e680a135850..14d7d795c52df8a6a566c5a97c597d17bd345508 100644 (file)
@@ -1330,15 +1330,25 @@ MagickPrivate void ConvertRGBToHWB(const double red,const double green,
 %      component of the LCH color space.
 %
 */
+
+static inline void ConvertXYZToLCHab(const double X,const double Y,
+  const double Z,double *luma,double *chroma,double *hue)
+{
+  double
+    a,
+    b;
+
+  ConvertXYZToLab(X,Y,Z,luma,&a,&b);
+  *chroma=hypot(a,b);
+  *hue=180.0*atan2(b,a)/MagickPI;
+  if (*hue < 0.0)
+    *hue+=360.0;
+}
+
 MagickPrivate void ConvertRGBToLCHab(const double red,const double green,
   const double blue,double *luma,double *chroma,double *hue)
 {
   double
-    a,
-    b,
-    C,
-    H,
-    L,
     X,
     Y,
     Z;
@@ -1350,14 +1360,7 @@ MagickPrivate void ConvertRGBToLCHab(const double red,const double green,
   assert(chroma != (double *) NULL);
   assert(hue != (double *) NULL);
   ConvertRGBToXYZ(red,green,blue,&X,&Y,&Z);
-  ConvertXYZToLab(X,Y,Z,&L,&a,&b);
-  C=hypot(255.0*(a-0.5)/500.0,255.0*(b-0.5)/200.0);
-  H=180.0*atan2(255.0*(b-0.5)/200.0,255.0*(a-0.5)/500.0)/MagickPI/360.0;
-  if (H < 0.0)
-    H+=1.0;
-  *luma=(100.0*L+16.0)/116.0;
-  *chroma=C;
-  *hue=H;
+  ConvertXYZToLCHab(X,Y,Z,luma,chroma,hue);
 }
 \f
 /*
@@ -1388,15 +1391,25 @@ MagickPrivate void ConvertRGBToLCHab(const double red,const double green,
 %      component of the LCHuv color space.
 %
 */
+
+static inline void ConvertXYZToLCHuv(const double X,const double Y,
+  const double Z,double *luma,double *chroma,double *hue)
+{
+  double
+    a,
+    b;
+
+  ConvertXYZToLab(X,Y,Z,luma,&a,&b);
+  *chroma=hypot(a,b);
+  *hue=180.0*atan2(b,a)/MagickPI;
+  if (*hue < 0.0)
+    *hue+=360.0;
+}
+
 MagickPrivate void ConvertRGBToLCHuv(const double red,const double green,
   const double blue,double *luma,double *chroma,double *hue)
 {
   double
-    C,
-    H,
-    L,
-    u,
-    v,
     X,
     Y,
     Z;
@@ -1408,16 +1421,7 @@ MagickPrivate void ConvertRGBToLCHuv(const double red,const double green,
   assert(chroma != (double *) NULL);
   assert(hue != (double *) NULL);
   ConvertRGBToXYZ(red,green,blue,&X,&Y,&Z);
-  ConvertXYZToLuv(X,Y,Z,&L,&u,&v);
-  C=hypot((354.0*u-134.0)/100.0,(262.0*v-140.0)/100.0);
-  H=180.0*atan2((262.0*v-140.0)/100.0,(354.0*u-134.0)/100.0)/MagickPI/360.0;
-  if (H < 0.0)
-    H+=1.0;
-  if (H >= 1.0)
-    H-=1.0;
-  *luma=L;
-  *chroma=C;
-  *hue=H;
+  ConvertXYZToLCHuv(X,Y,Z,luma,chroma,hue);
 }
 \f
 /*