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);
}