From: cristy Date: Sun, 8 Jan 2012 02:53:08 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~6428 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5d6f7ed86caf285d527de830948390b1ea40a4a5;p=imagemagick --- diff --git a/MagickCore/attribute.c b/MagickCore/attribute.c index 0fc9cd871..9afee790b 100644 --- a/MagickCore/attribute.c +++ b/MagickCore/attribute.c @@ -825,11 +825,40 @@ MagickExport MagickBooleanType SetImageDepth(Image *image, image->depth=depth; return(MagickTrue); } + range=GetQuantumRange(depth); + if (image->storage_class == PseudoClass) + { + register PixelInfo + *restrict p; + + register ssize_t + i; + + p=image->colormap; +#if defined(MAGICKCORE_OPENMP_SUPPORT) + #pragma omp parallel for schedule(static,4) shared(status) +#endif + for (i=0; i < (ssize_t) image->colors; i++) + { + if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0) + p->red=ScaleAnyToQuantum(ScaleQuantumToAny(p->red,range),range); + if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0) + p->green=ScaleAnyToQuantum(ScaleQuantumToAny(p->green,range),range); + if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0) + p->blue=ScaleAnyToQuantum(ScaleQuantumToAny(p->blue,range),range); + if ((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) + p->alpha=ScaleAnyToQuantum(ScaleQuantumToAny(p->alpha,range),range); + p++; + } + status=SyncImage(image,exception); + if (status != MagickFalse) + image->depth=depth; + return(status); + } /* Scale pixels to desired depth. */ status=MagickTrue; - range=GetQuantumRange(depth); image_view=AcquireCacheView(image); #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) shared(status) @@ -879,31 +908,7 @@ MagickExport MagickBooleanType SetImageDepth(Image *image, } } image_view=DestroyCacheView(image_view); - if (image->storage_class == PseudoClass) - { - register PixelInfo - *restrict p; - - register ssize_t - i; - - p=image->colormap; -#if defined(MAGICKCORE_OPENMP_SUPPORT) - #pragma omp parallel for schedule(static,4) shared(status) -#endif - for (i=0; i < (ssize_t) image->colors; i++) - { - if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0) - p->red=ScaleAnyToQuantum(ScaleQuantumToAny(p->red,range),range); - if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0) - p->green=ScaleAnyToQuantum(ScaleQuantumToAny(p->green,range),range); - if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0) - p->blue=ScaleAnyToQuantum(ScaleQuantumToAny(p->blue,range),range); - if ((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) - p->alpha=ScaleAnyToQuantum(ScaleQuantumToAny(p->alpha,range),range); - p++; - } - } - image->depth=depth; + if (status != MagickFalse) + image->depth=depth; return(status); }