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

index 61cc59ece3237ba21eb98017122114f9a52564f2..cb71e2de92eb6aa2132597a9c03a8b659b96f5c1 100644 (file)
@@ -1219,7 +1219,7 @@ static inline void ConvertLuvToRGB(const double L,const double u,
     Y,
     Z;
 
-  ConvertLuvToXYZ(L,u,v,&X,&Y,&Z);
+  ConvertLuvToXYZ(100.0*L,(354.0*u-134.0),262.0*v-140.0,&X,&Y,&Z);
   ConvertXYZToRGB(X,Y,Z,red,green,blue);
 }
 
index 323f9ede56c273d0eb45290e13d4537fd866225d..0953aba666cbaccf276fee59f81c5d64c6459832 100644 (file)
@@ -110,16 +110,15 @@ static inline void ConvertLuvToXYZ(const double L,const double u,const double v,
   assert(X != (double *) NULL);
   assert(Y != (double *) NULL);
   assert(Z != (double *) NULL);
-  if ((100.0*L) > (CIEK*CIEEpsilon))
-    *Y=(double) pow(((100.0*L)+16.0)/116.0,3.0);
+  if (L > (CIEK*CIEEpsilon))
+    *Y=(double) pow((L+16.0)/116.0,3.0);
   else
-    *Y=(100.0*L)/CIEK;
-  *X=((*Y*((39.0*(100.0*L)/((262.0*v-140.0)+13.0*(100.0*L)*(9.0*D65Y/
-    (D65X+15.0*D65Y+3.0*D65Z))))-5.0))+5.0*(*Y))/((((52.0f*(100.0*L)/
-    ((354.0*u-134.0)+13.0*(100.0*L)*(4.0*D65X/(D65X+15.0*D65Y+3.0*
-    D65Z))))-1.0)/3.0)-(-1.0/3.0));
-  *Z=(*X*(((52.0f*(100.0*L)/((354.0*u-134.0)+13.0*(100.0*L)*(4.0*D65X/
-    (D65X+15.0*D65Y+3.0*D65Z))))-1.0)/3.0))-5.0*(*Y);
+    *Y=L/CIEK;
+  *X=((*Y*((39.0*L/(v+13.0*L*(9.0*D65Y/(D65X+15.0*D65Y+3.0*D65Z))))-5.0))+
+    5.0*(*Y))/((((52.0f*L/(u+13.0*L*(4.0*D65X/(D65X+15.0*D65Y+3.0*D65Z))))-1.0)/
+    3.0)-(-1.0/3.0));
+  *Z=(*X*(((52.0f*L/(u+13.0*L*(4.0*D65X/(D65X+15.0*D65Y+3.0*D65Z))))-1.0)/3.0))-
+    5.0*(*Y);
 }
 
 static inline void ConvertRGBToXYZ(const double red,const double green,
index 4b6b90518ce62698099668dc92ba27fbcfc21dc7..3866087cb1d291178cdc897800ce1e680a135850 100644 (file)
@@ -790,15 +790,18 @@ MagickPrivate void ConvertLCHabToRGB(const double luma,const double chroma,
 %    o red, green, blue: A pointer to a pixel component of type Quantum.
 %
 */
+
+static inline void ConvertLCHuvToXYZ(const double luma,const double chroma,
+  const double hue,double *X,double *Y,double *Z)
+{
+  ConvertLuvToXYZ(luma,chroma*cos(hue*MagickPI/180.0),chroma*
+    sin(hue*MagickPI/180.0),X,Y,Z);
+}
+
 MagickPrivate void ConvertLCHuvToRGB(const double luma,const double chroma,
   const double hue,double *red,double *green,double *blue)
 {
   double
-    C,
-    H,
-    L,
-    u,
-    v,
     X,
     Y,
     Z;
@@ -809,12 +812,7 @@ MagickPrivate void ConvertLCHuvToRGB(const double luma,const double chroma,
   assert(red != (double *) NULL);
   assert(green != (double *) NULL);
   assert(blue != (double *) NULL);
-  L=luma;
-  C=chroma;
-  H=hue;
-  u=C*cos(360.0*H*MagickPI/180.0);
-  v=C*sin(360.0*H*MagickPI/180.0);
-  ConvertLuvToXYZ(L,(100.0*u+134.0)/354.0,(100.0*v+140.0)/262.0,&X,&Y,&Z);
+  ConvertLCHuvToXYZ(100.0*luma,354.0*chroma-134.0,262.0*hue-140.0,&X,&Y,&Z);
   ConvertXYZToRGB(X,Y,Z,red,green,blue);
 }
 \f