From: cristy Date: Thu, 12 Jul 2012 17:34:52 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~5268 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=af1700b2ce793566452f614cf8755cff921df3e3;p=imagemagick --- diff --git a/MagickCore/color.c b/MagickCore/color.c index 5581a07a3..63cae8b60 100644 --- a/MagickCore/color.c +++ b/MagickCore/color.c @@ -2321,76 +2321,90 @@ MagickExport MagickBooleanType QueryColorCompliance(const char *name, color->colorspace=sRGBColorspace; /* as required by SVG standard */ SetGeometryInfo(&geometry_info); flags=ParseGeometry(name+i+1,&geometry_info); - if ((flags & PercentValue) != 0) - scale=(MagickRealType) (QuantumRange/100.0); - if ((flags & RhoValue) != 0) - color->red=(MagickRealType) ClampToQuantum(scale*geometry_info.rho); - if ((flags & SigmaValue) != 0) - color->green=(MagickRealType) ClampToQuantum(scale*geometry_info.sigma); - if ((flags & XiValue) != 0) - color->blue=(MagickRealType) ClampToQuantum(scale*geometry_info.xi); - color->alpha=(MagickRealType) OpaqueAlpha; - if ((flags & PsiValue) != 0) - { - if (color->colorspace == CMYKColorspace) - color->black=(MagickRealType) ClampToQuantum(scale* - geometry_info.psi); - else - if (color->matte != MagickFalse) - color->alpha=(MagickRealType) ClampToQuantum(QuantumRange* - geometry_info.psi); - } - if (((flags & ChiValue) != 0) && (color->matte != MagickFalse)) - color->alpha=(MagickRealType) ClampToQuantum(QuantumRange* - geometry_info.chi); - if (LocaleCompare(colorspace,"gray") == 0) + if (flags == 0) { - color->colorspace=GRAYColorspace; - color->green=color->red; - color->blue=color->red; - if (((flags & SigmaValue) != 0) && (color->matte != MagickFalse)) - color->alpha=(MagickRealType) ClampToQuantum(QuantumRange* - geometry_info.sigma); + char + *colorname; + + colorname=AcquireString(name+i+1); + (void) SubstituteString(&colorname,")",""); + (void) QueryColorCompliance(colorname,AllCompliance,color,exception); + colorname=DestroyString(colorname); } - if ((LocaleCompare(colorspace,"HSB") == 0) || - (LocaleCompare(colorspace,"HSL") == 0) || - (LocaleCompare(colorspace,"HWB") == 0)) + else { - PixelInfo - pixel; - - if (LocaleCompare(colorspace,"HSB") == 0) - color->colorspace=HSBColorspace; - if (LocaleCompare(colorspace,"HSL") == 0) - color->colorspace=HSLColorspace; - if (LocaleCompare(colorspace,"HWB") == 0) - color->colorspace=HWBColorspace; - scale=1.0/360.0; - if ((flags & PercentValue) != 0) - scale=1.0/100.0; - geometry_info.rho*=360.0*scale; - scale=1.0/255.0; if ((flags & PercentValue) != 0) - scale=1.0/100.0; - geometry_info.sigma*=scale; - geometry_info.xi*=scale; - if (LocaleCompare(colorspace,"HSB") == 0) - ConvertHSBToRGB(fmod(fmod(geometry_info.rho,360.0)+360.0,360.0)/ - 360.0,geometry_info.sigma,geometry_info.xi,&pixel.red, - &pixel.green,&pixel.blue); - else - if (LocaleCompare(colorspace,"HSL") == 0) - ConvertHSLToRGB(fmod(fmod(geometry_info.rho,360.0)+360.0,360.0)/ - 360.0,geometry_info.sigma,geometry_info.xi,&pixel.red, - &pixel.green,&pixel.blue); - else - ConvertHWBToRGB(fmod(fmod(geometry_info.rho,360.0)+360.0,360.0)/ - 360.0,geometry_info.sigma,geometry_info.xi,&pixel.red, - &pixel.green,&pixel.blue); - color->colorspace=sRGBColorspace; - color->red=(MagickRealType) pixel.red; - color->green=(MagickRealType) pixel.green; - color->blue=(MagickRealType) pixel.blue; + scale=(MagickRealType) (QuantumRange/100.0); + if ((flags & RhoValue) != 0) + color->red=(MagickRealType) ClampToQuantum(scale*geometry_info.rho); + if ((flags & SigmaValue) != 0) + color->green=(MagickRealType) ClampToQuantum(scale* + geometry_info.sigma); + if ((flags & XiValue) != 0) + color->blue=(MagickRealType) ClampToQuantum(scale*geometry_info.xi); + color->alpha=(MagickRealType) OpaqueAlpha; + if ((flags & PsiValue) != 0) + { + if (color->colorspace == CMYKColorspace) + color->black=(MagickRealType) ClampToQuantum(scale* + geometry_info.psi); + else + if (color->matte != MagickFalse) + color->alpha=(MagickRealType) ClampToQuantum(QuantumRange* + geometry_info.psi); + } + if (((flags & ChiValue) != 0) && (color->matte != MagickFalse)) + color->alpha=(MagickRealType) ClampToQuantum(QuantumRange* + geometry_info.chi); + if (LocaleCompare(colorspace,"gray") == 0) + { + color->colorspace=GRAYColorspace; + color->green=color->red; + color->blue=color->red; + if (((flags & SigmaValue) != 0) && (color->matte != MagickFalse)) + color->alpha=(MagickRealType) ClampToQuantum(QuantumRange* + geometry_info.sigma); + } + if ((LocaleCompare(colorspace,"HSB") == 0) || + (LocaleCompare(colorspace,"HSL") == 0) || + (LocaleCompare(colorspace,"HWB") == 0)) + { + PixelInfo + pixel; + + if (LocaleCompare(colorspace,"HSB") == 0) + color->colorspace=HSBColorspace; + if (LocaleCompare(colorspace,"HSL") == 0) + color->colorspace=HSLColorspace; + if (LocaleCompare(colorspace,"HWB") == 0) + color->colorspace=HWBColorspace; + scale=1.0/360.0; + if ((flags & PercentValue) != 0) + scale=1.0/100.0; + geometry_info.rho*=360.0*scale; + scale=1.0/255.0; + if ((flags & PercentValue) != 0) + scale=1.0/100.0; + geometry_info.sigma*=scale; + geometry_info.xi*=scale; + if (LocaleCompare(colorspace,"HSB") == 0) + ConvertHSBToRGB(fmod(fmod(geometry_info.rho,360.0)+360.0,360.0)/ + 360.0,geometry_info.sigma,geometry_info.xi,&pixel.red, + &pixel.green,&pixel.blue); + else + if (LocaleCompare(colorspace,"HSL") == 0) + ConvertHSLToRGB(fmod(fmod(geometry_info.rho,360.0)+360.0, + 360.0)/360.0,geometry_info.sigma,geometry_info.xi, + &pixel.red,&pixel.green,&pixel.blue); + else + ConvertHWBToRGB(fmod(fmod(geometry_info.rho,360.0)+360.0, + 360.0)/360.0,geometry_info.sigma,geometry_info.xi, + &pixel.red,&pixel.green,&pixel.blue); + color->colorspace=sRGBColorspace; + color->red=(MagickRealType) pixel.red; + color->green=(MagickRealType) pixel.green; + color->blue=(MagickRealType) pixel.blue; + } } return(MagickTrue); }