From bf9bdc57379db69d1cb25fdb5d9aceedec022309 Mon Sep 17 00:00:00 2001 From: cristy Date: Sat, 26 Sep 2009 19:00:03 +0000 Subject: [PATCH] --- magick/color.c | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/magick/color.c b/magick/color.c index f80c06b53..bf98d72c1 100644 --- a/magick/color.c +++ b/magick/color.c @@ -681,7 +681,10 @@ MagickExport void ConcatenateColorComponent(const MagickPixelPacket *pixel, (void) ConcatenateMagickString(tuple,component,MaxTextExtent); return; } - if ((channel == RedChannel) && (pixel->colorspace == HSLColorspace)) + if ((channel == RedChannel) && + ((pixel->colorspace == HSBColorspace) || + (pixel->colorspace == HSLColorspace) || + (pixel->colorspace == HWBColorspace))) { (void) FormatMagickString(component,MaxTextExtent,"%g", 360.0*(QuantumScale*color)); @@ -3308,16 +3311,35 @@ MagickExport MagickBooleanType QueryMagickColor(const char *name, color->opacity=(MagickRealType) RoundToQuantum((MagickRealType) (QuantumRange-QuantumRange*geometry_info.sigma)); } - if (LocaleCompare(colorspace,"HSL") == 0) + if (LocaleCompare(colorspace,"HSB") == 0) { PixelPacket pixel; + geometry_info.rho=fmod(fmod(scale*geometry_info.rho,360.0)+360.0, + 360.0)/360.0; scale=1.0/255.0; if ((flags & PercentValue) != 0) scale=1.0/100.0; + geometry_info.sigma*=scale; + geometry_info.xi*=scale; + ConvertHSBToRGB(geometry_info.rho,geometry_info.sigma, + geometry_info.xi,&pixel.red,&pixel.green,&pixel.blue); + color->colorspace=RGBColorspace; + color->red=(MagickRealType) pixel.red; + color->green=(MagickRealType) pixel.green; + color->blue=(MagickRealType) pixel.blue; + } + if (LocaleCompare(colorspace,"HSL") == 0) + { + PixelPacket + pixel; + geometry_info.rho=fmod(fmod(scale*geometry_info.rho,360.0)+360.0, 360.0)/360.0; + scale=1.0/255.0; + if ((flags & PercentValue) != 0) + scale=1.0/100.0; geometry_info.sigma*=scale; geometry_info.xi*=scale; ConvertHSLToRGB(geometry_info.rho,geometry_info.sigma, @@ -3327,6 +3349,25 @@ MagickExport MagickBooleanType QueryMagickColor(const char *name, color->green=(MagickRealType) pixel.green; color->blue=(MagickRealType) pixel.blue; } + if (LocaleCompare(colorspace,"HWB") == 0) + { + PixelPacket + pixel; + + geometry_info.rho=fmod(fmod(scale*geometry_info.rho,360.0)+360.0, + 360.0)/360.0; + scale=1.0/255.0; + if ((flags & PercentValue) != 0) + scale=1.0/100.0; + geometry_info.sigma*=scale; + geometry_info.xi*=scale; + ConvertHWBToRGB(geometry_info.rho,geometry_info.sigma, + geometry_info.xi,&pixel.red,&pixel.green,&pixel.blue); + color->colorspace=RGBColorspace; + color->red=(MagickRealType) pixel.red; + color->green=(MagickRealType) pixel.green; + color->blue=(MagickRealType) pixel.blue; + } return(MagickTrue); } /* -- 2.50.1