color->depth=8;
}
SetGeometryInfo(&geometry_info);
- if (i >= strlen(name))
+ if (i >= (ssize_t) strlen(name))
flags=ParseGeometry(name,&geometry_info);
else
flags=ParseGeometry(name+i+1,&geometry_info);
ColorspaceType
colorspaceType;
+ MagickBooleanType
+ status;
+
colorspaceType=color->colorspace;
- if (i >= strlen(name))
+ if (i >= (ssize_t) strlen(name))
colorname=AcquireString(name);
else
colorname=AcquireString(name+i+1);
(void) SubstituteString(&colorname,")","");
- (void) QueryColorCompliance(colorname,AllCompliance,color,exception);
+ status=QueryColorCompliance(colorname,AllCompliance,color,exception);
colorname=DestroyString(colorname);
color->colorspace=colorspaceType;
+ return(status);
}
- else
+ if ((flags & PercentValue) != 0)
+ scale=(double) (QuantumRange/100.0);
+ if ((flags & RhoValue) != 0)
+ color->red=(double) ClampToQuantum((MagickRealType) (scale*
+ geometry_info.rho));
+ if ((flags & SigmaValue) != 0)
+ color->green=(double) ClampToQuantum((MagickRealType) (scale*
+ geometry_info.sigma));
+ if ((flags & XiValue) != 0)
+ color->blue=(double) ClampToQuantum((MagickRealType) (scale*
+ geometry_info.xi));
+ color->alpha=(double) OpaqueAlpha;
+ if ((flags & PsiValue) != 0)
+ {
+ if (color->colorspace == CMYKColorspace)
+ color->black=(double) ClampToQuantum((MagickRealType) (scale*
+ geometry_info.psi));
+ else
+ if (color->alpha_trait != UndefinedPixelTrait)
+ color->alpha=(double) ClampToQuantum(QuantumRange*
+ geometry_info.psi);
+ }
+ if (((flags & ChiValue) != 0) &&
+ (color->alpha_trait != UndefinedPixelTrait))
+ color->alpha=(double) ClampToQuantum(QuantumRange*geometry_info.chi);
+ if (color->colorspace == LabColorspace)
{
- if ((flags & PercentValue) != 0)
- scale=(double) (QuantumRange/100.0);
- if ((flags & RhoValue) != 0)
- color->red=(double) ClampToQuantum((MagickRealType) (scale*
- geometry_info.rho));
if ((flags & SigmaValue) != 0)
- color->green=(double) ClampToQuantum((MagickRealType) (scale*
- geometry_info.sigma));
+ color->green=(MagickRealType) ClampToQuantum((MagickRealType)
+ (scale*geometry_info.sigma+(QuantumRange+1)/2.0));
if ((flags & XiValue) != 0)
- color->blue=(double) ClampToQuantum((MagickRealType) (scale*
- geometry_info.xi));
- color->alpha=(double) OpaqueAlpha;
- if ((flags & PsiValue) != 0)
- {
- if (color->colorspace == CMYKColorspace)
- color->black=(double) ClampToQuantum((MagickRealType) (
- scale*geometry_info.psi));
- else
- if (color->alpha_trait != UndefinedPixelTrait)
- color->alpha=(double) ClampToQuantum(QuantumRange*
- geometry_info.psi);
- }
- if (((flags & ChiValue) != 0) &&
+ color->blue=(MagickRealType) ClampToQuantum((MagickRealType)
+ (scale*geometry_info.xi+(QuantumRange+1)/2.0));
+ }
+ if (LocaleCompare(colorspace,"gray") == 0)
+ {
+ color->green=color->red;
+ color->blue=color->red;
+ if (((flags & SigmaValue) != 0) &&
(color->alpha_trait != UndefinedPixelTrait))
color->alpha=(double) ClampToQuantum(QuantumRange*
- geometry_info.chi);
- if (color->colorspace == LabColorspace)
+ geometry_info.sigma);
+ if ((icc_color == MagickFalse) &&
+ (color->colorspace == LinearGRAYColorspace))
{
- if ((flags & SigmaValue) != 0)
- color->green=(MagickRealType) ClampToQuantum((MagickRealType)
- (scale*geometry_info.sigma+(QuantumRange+1)/2.0));
- if ((flags & XiValue) != 0)
- color->blue=(MagickRealType) ClampToQuantum((MagickRealType)
- (scale*geometry_info.xi+(QuantumRange+1)/2.0));
+ color->colorspace=GRAYColorspace;
+ color->depth=8;
}
- if (LocaleCompare(colorspace,"gray") == 0)
- {
- color->green=color->red;
- color->blue=color->red;
- if (((flags & SigmaValue) != 0) &&
- (color->alpha_trait != UndefinedPixelTrait))
- color->alpha=(double) ClampToQuantum(QuantumRange*
- geometry_info.sigma);
- if ((icc_color == MagickFalse) &&
- (color->colorspace == LinearGRAYColorspace))
- {
- color->colorspace=GRAYColorspace;
- color->depth=8;
- }
- }
- if ((LocaleCompare(colorspace,"HCL") == 0) ||
- (LocaleCompare(colorspace,"HSB") == 0) ||
- (LocaleCompare(colorspace,"HSL") == 0) ||
- (LocaleCompare(colorspace,"HWB") == 0))
- {
- double
- blue,
- green,
- red;
+ }
+ if ((LocaleCompare(colorspace,"HCL") == 0) ||
+ (LocaleCompare(colorspace,"HSB") == 0) ||
+ (LocaleCompare(colorspace,"HSL") == 0) ||
+ (LocaleCompare(colorspace,"HWB") == 0))
+ {
+ double
+ blue,
+ green,
+ red;
- if (LocaleCompare(colorspace,"HCL") == 0)
- color->colorspace=HCLColorspace;
+ if (LocaleCompare(colorspace,"HCL") == 0)
+ color->colorspace=HCLColorspace;
+ else
+ if (LocaleCompare(colorspace,"HSB") == 0)
+ color->colorspace=HSBColorspace;
+ else
+ if (LocaleCompare(colorspace,"HSL") == 0)
+ color->colorspace=HSLColorspace;
else
- if (LocaleCompare(colorspace,"HSB") == 0)
- color->colorspace=HSBColorspace;
- else
- if (LocaleCompare(colorspace,"HSL") == 0)
- color->colorspace=HSLColorspace;
- else
- if (LocaleCompare(colorspace,"HWB") == 0)
- color->colorspace=HWBColorspace;
- 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,"HCL") == 0)
- ConvertHCLToRGB(fmod(fmod(geometry_info.rho,360.0)+360.0,
- 360.0)/360.0,geometry_info.sigma,geometry_info.xi,&red,
- &green,&blue);
+ if (LocaleCompare(colorspace,"HWB") == 0)
+ color->colorspace=HWBColorspace;
+ 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,"HCL") == 0)
+ ConvertHCLToRGB(fmod(fmod(geometry_info.rho,360.0)+360.0,360.0)/
+ 360.0,geometry_info.sigma,geometry_info.xi,&red,&green,&blue);
+ else
+ 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,&red,&green,&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,&red,&green,&blue);
else
- 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,&red,
- &green,&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,&red,
- &green,&blue);
- else
- ConvertHWBToRGB(fmod(fmod(geometry_info.rho,360.0)+360.0,
- 360.0)/360.0,geometry_info.sigma,geometry_info.xi,&red,
- &green,&blue);
- color->colorspace=sRGBColorspace;
- color->red=(MagickRealType) red;
- color->green=(MagickRealType) green;
- color->blue=(MagickRealType) blue;
- }
+ ConvertHWBToRGB(fmod(fmod(geometry_info.rho,360.0)+360.0,360.0)/
+ 360.0,geometry_info.sigma,geometry_info.xi,&red,&green,&blue);
+ color->colorspace=sRGBColorspace;
+ color->red=(MagickRealType) red;
+ color->green=(MagickRealType) green;
+ color->blue=(MagickRealType) blue;
}
return(MagickTrue);
}