From b4d27c3dba1d142ba3eade4ba8067ba33756eff3 Mon Sep 17 00:00:00 2001 From: cristy Date: Wed, 24 Sep 2014 12:59:33 +0000 Subject: [PATCH] --- MagickCore/quantize.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/MagickCore/quantize.c b/MagickCore/quantize.c index e004e1e7c..03995fd84 100644 --- a/MagickCore/quantize.c +++ b/MagickCore/quantize.c @@ -852,6 +852,9 @@ static MagickBooleanType ClassifyImageColors(CubeInfo *cube_info, node_info=cube_info->root; for (level=1; level <= MaxTreeDepth; level++) { + double + distance; + bisect*=0.5; id=ColorToNodeId(cube_info,&pixel,index); mid.red+=(id & 1) != 0 ? bisect : -bisect; @@ -883,9 +886,11 @@ static MagickBooleanType ClassifyImageColors(CubeInfo *cube_info, error.blue=QuantumScale*(pixel.blue-mid.blue); if (cube_info->associate_alpha != MagickFalse) error.alpha=QuantumScale*(pixel.alpha-mid.alpha); - node_info->quantize_error+=count*sqrt((double) (error.red*error.red+ - error.green*error.green+error.blue*error.blue+ - error.alpha*error.alpha)); + distance=(double) (error.red*error.red+error.green*error.green+ + error.blue*error.blue+error.alpha*error.alpha); + if (IsNaN(distance) != MagickFalse) + distance=0.0; + node_info->quantize_error+=count*sqrt(distance); cube_info->root->quantize_error+=node_info->quantize_error; index--; } @@ -951,6 +956,9 @@ static MagickBooleanType ClassifyImageColors(CubeInfo *cube_info, node_info=cube_info->root; for (level=1; level <= cube_info->depth; level++) { + double + distance; + bisect*=0.5; id=ColorToNodeId(cube_info,&pixel,index); mid.red+=(id & 1) != 0 ? bisect : -bisect; @@ -982,9 +990,11 @@ static MagickBooleanType ClassifyImageColors(CubeInfo *cube_info, error.blue=QuantumScale*(pixel.blue-mid.blue); if (cube_info->associate_alpha != MagickFalse) error.alpha=QuantumScale*(pixel.alpha-mid.alpha); - node_info->quantize_error+=count*sqrt((double) (error.red*error.red+ - error.green*error.green+error.blue*error.blue+ - error.alpha*error.alpha)); + distance=(double) (error.red*error.red+error.green*error.green+ + error.blue*error.blue+error.alpha*error.alpha); + if (IsNaN(distance) != MagickFalse) + distance=0.0; + node_info->quantize_error+=count*sqrt(distance); cube_info->root->quantize_error+=node_info->quantize_error; index--; } -- 2.50.1