From: cristy Date: Mon, 6 May 2013 12:04:10 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~3729 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a8716919a55158a0c96230260000665d0db38a3a;p=imagemagick --- diff --git a/MagickCore/colorspace.c b/MagickCore/colorspace.c index 61cc59ece..cb71e2de9 100644 --- a/MagickCore/colorspace.c +++ b/MagickCore/colorspace.c @@ -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); } diff --git a/MagickCore/gem-private.h b/MagickCore/gem-private.h index 323f9ede5..0953aba66 100644 --- a/MagickCore/gem-private.h +++ b/MagickCore/gem-private.h @@ -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, diff --git a/MagickCore/gem.c b/MagickCore/gem.c index 4b6b90518..3866087cb 100644 --- a/MagickCore/gem.c +++ b/MagickCore/gem.c @@ -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); }