From: cristy Date: Thu, 22 Oct 2009 23:59:52 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~10479 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=46f7d71a4b5e8e208143d65eea9571050603126b;p=imagemagick --- diff --git a/ChangeLog b/ChangeLog index ca5dd14ad..dab7b0587 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ 2009-10-18 6.5.7-1 Cristy * Alpha blending is not required for ScaleImage(). * Guassian noise operator is not longer discontinuous. + * Correct hue computation for the HSB colorspace. 2009-10-14 6.5.7-0 Pino Toscano * ImageMagick fails to build in GNU/HURD due to absence of PATH_MAX. diff --git a/magick/gem.c b/magick/gem.c index f0cd3467e..747ba0762 100644 --- a/magick/gem.c +++ b/magick/gem.c @@ -372,16 +372,20 @@ MagickExport void ConvertRGBToHSB(const Quantum red,const Quantum green, *brightness=(double) (QuantumScale*max); if (delta == 0.0) return; - if ((MagickRealType) red == max) - *hue=(double) ((green-(MagickRealType) blue)/delta); + if (red == max) + *hue=((((max-blue)/6.0)+(delta/2.0))-(((max-green)/6.0)+(delta/2.0)))/delta; else - if ((MagickRealType) green == max) - *hue=(double) (2.0+(blue-(MagickRealType) red)/delta); + if (green == max) + *hue=(1.0/3.0)+((((max-red)/6.0)+(delta/2.0))-(((max-blue)/6.0)+ + (delta/2.0)))/delta; else - *hue=(double) (4.0+(red-(MagickRealType) green)/delta); - *hue/=6.0; + if (blue == max) + *hue=(2.0/3.0)+((((max-green)/6.0)+(delta/2.0))-(((max-red)/6.0)+ + (delta/2.0)))/delta; if (*hue < 0.0) *hue+=1.0; + if (*hue > 1.0) + *hue-=1.0; } /*