From: cristy Date: Sat, 4 Feb 2012 16:44:10 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~6261 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d09f880db9ae231429495434fc7f908bdce240f4;p=imagemagick --- diff --git a/MagickCore/cache-view.c b/MagickCore/cache-view.c index c2062b651..baa6ada7c 100644 --- a/MagickCore/cache-view.c +++ b/MagickCore/cache-view.c @@ -643,10 +643,15 @@ MagickExport MagickBooleanType GetOneCacheViewAuthenticPixel( cache_view->nexus_info[id],exception); if (p == (const Quantum *) NULL) { - pixel[RedPixelChannel]=cache_view->image->background_color.red; - pixel[GreenPixelChannel]=cache_view->image->background_color.green; - pixel[BluePixelChannel]=cache_view->image->background_color.blue; - pixel[AlphaPixelChannel]=cache_view->image->background_color.alpha; + PixelInfo + background_color; + + background_color=cache_view->image->background_color; + pixel[RedPixelChannel]=ClampToQuantum(background_color.red); + pixel[GreenPixelChannel]=ClampToQuantum(background_color.green); + pixel[BluePixelChannel]=ClampToQuantum(background_color.blue); + pixel[BlackPixelChannel]=ClampToQuantum(background_color.black); + pixel[AlphaPixelChannel]=ClampToQuantum(background_color.alpha); return(MagickFalse); } for (i=0; i < (ssize_t) GetPixelChannels(cache_view->image); i++) @@ -714,10 +719,15 @@ MagickExport MagickBooleanType GetOneCacheViewVirtualPixel( exception); if (p == (const Quantum *) NULL) { - pixel[RedPixelChannel]=cache_view->image->background_color.red; - pixel[GreenPixelChannel]=cache_view->image->background_color.green; - pixel[BluePixelChannel]=cache_view->image->background_color.blue; - pixel[AlphaPixelChannel]=cache_view->image->background_color.alpha; + PixelInfo + background_color; + + background_color=cache_view->image->background_color; + pixel[RedPixelChannel]=ClampToQuantum(background_color.red); + pixel[GreenPixelChannel]=ClampToQuantum(background_color.green); + pixel[BluePixelChannel]=ClampToQuantum(background_color.blue); + pixel[BlackPixelChannel]=ClampToQuantum(background_color.black); + pixel[AlphaPixelChannel]=ClampToQuantum(background_color.alpha); return(MagickFalse); } for (i=0; i < (ssize_t) GetPixelChannels(cache_view->image); i++) @@ -788,10 +798,15 @@ MagickExport MagickBooleanType GetOneCacheViewVirtualMethodPixel( cache_view->nexus_info[id],exception); if (p == (const Quantum *) NULL) { - pixel[RedPixelChannel]=cache_view->image->background_color.red; - pixel[GreenPixelChannel]=cache_view->image->background_color.green; - pixel[BluePixelChannel]=cache_view->image->background_color.blue; - pixel[AlphaPixelChannel]=cache_view->image->background_color.alpha; + PixelInfo + background_color; + + background_color=cache_view->image->background_color; + pixel[RedPixelChannel]=ClampToQuantum(background_color.red); + pixel[GreenPixelChannel]=ClampToQuantum(background_color.green); + pixel[BluePixelChannel]=ClampToQuantum(background_color.blue); + pixel[BlackPixelChannel]=ClampToQuantum(background_color.black); + pixel[AlphaPixelChannel]=ClampToQuantum(background_color.alpha); return(MagickFalse); } for (i=0; i < (ssize_t) GetPixelChannels(cache_view->image); i++) diff --git a/MagickCore/compare.c b/MagickCore/compare.c index a2f9b30c7..029e9f039 100644 --- a/MagickCore/compare.c +++ b/MagickCore/compare.c @@ -215,14 +215,15 @@ MagickExport Image *CompareImages(Image *image,const Image *reconstruct_image, register ssize_t i; - difference=MagickFalse; if (GetPixelMask(image,p) != 0) { + SetPixelInfoPixel(highlight_image,&lowlight,r); p+=GetPixelChannels(image); q+=GetPixelChannels(reconstruct_image); r+=GetPixelChannels(highlight_image); continue; } + difference=MagickFalse; for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -239,12 +240,11 @@ MagickExport Image *CompareImages(Image *image,const Image *reconstruct_image, traits=GetPixelChannelMapTraits(image,channel); reconstruct_traits=GetPixelChannelMapTraits(reconstruct_image,channel); if ((traits == UndefinedPixelTrait) || - (reconstruct_traits == UndefinedPixelTrait)) + (reconstruct_traits == UndefinedPixelTrait) || + ((reconstruct_traits & UpdatePixelTrait) == 0)) continue; - if ((reconstruct_traits & UpdatePixelTrait) == 0) - continue; - distance=p[i]-(MagickRealType) - GetPixelChannel(reconstruct_image,channel,q); + distance=p[i]-(MagickRealType) GetPixelChannel(reconstruct_image, + channel,q); if (fabs((double) distance) >= MagickEpsilon) difference=MagickTrue; } @@ -359,13 +359,13 @@ static MagickBooleanType GetAbsoluteDistortion(const Image *image, register ssize_t i; - difference=MagickFalse; if (GetPixelMask(image,p) != 0) { p+=GetPixelChannels(image); q+=GetPixelChannels(reconstruct_image); continue; } + difference=MagickFalse; for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { PixelChannel @@ -379,9 +379,8 @@ static MagickBooleanType GetAbsoluteDistortion(const Image *image, traits=GetPixelChannelMapTraits(image,channel); reconstruct_traits=GetPixelChannelMapTraits(reconstruct_image,channel); if ((traits == UndefinedPixelTrait) || - (reconstruct_traits == UndefinedPixelTrait)) - continue; - if ((reconstruct_traits & UpdatePixelTrait) == 0) + (reconstruct_traits == UndefinedPixelTrait) || + ((reconstruct_traits & UpdatePixelTrait) == 0)) continue; if (p[i] != GetPixelChannel(reconstruct_image,channel,q)) difference=MagickTrue; @@ -503,9 +502,8 @@ static MagickBooleanType GetFuzzDistortion(const Image *image, traits=GetPixelChannelMapTraits(image,channel); reconstruct_traits=GetPixelChannelMapTraits(reconstruct_image,channel); if ((traits == UndefinedPixelTrait) || - (reconstruct_traits == UndefinedPixelTrait)) - continue; - if ((reconstruct_traits & UpdatePixelTrait) == 0) + (reconstruct_traits == UndefinedPixelTrait) || + ((reconstruct_traits & UpdatePixelTrait) == 0)) continue; distance=QuantumScale*(p[i]-(MagickRealType) GetPixelChannel( reconstruct_image,channel,q)); @@ -604,9 +602,8 @@ static MagickBooleanType GetMeanAbsoluteDistortion(const Image *image, traits=GetPixelChannelMapTraits(image,channel); reconstruct_traits=GetPixelChannelMapTraits(reconstruct_image,channel); if ((traits == UndefinedPixelTrait) || - (reconstruct_traits == UndefinedPixelTrait)) - continue; - if ((reconstruct_traits & UpdatePixelTrait) == 0) + (reconstruct_traits == UndefinedPixelTrait) || + ((reconstruct_traits & UpdatePixelTrait) == 0)) continue; distance=QuantumScale*fabs(p[i]-(MagickRealType) GetPixelChannel( reconstruct_image,channel,q)); @@ -702,9 +699,8 @@ static MagickBooleanType GetMeanErrorPerPixel(Image *image, traits=GetPixelChannelMapTraits(image,channel); reconstruct_traits=GetPixelChannelMapTraits(reconstruct_image,channel); if ((traits == UndefinedPixelTrait) || - (reconstruct_traits == UndefinedPixelTrait)) - continue; - if ((reconstruct_traits & UpdatePixelTrait) == 0) + (reconstruct_traits == UndefinedPixelTrait) || + ((reconstruct_traits & UpdatePixelTrait) == 0)) continue; distance=fabs((double) (alpha*p[i]-beta*GetPixelChannel( reconstruct_image,channel,q))); @@ -800,9 +796,8 @@ static MagickBooleanType GetMeanSquaredDistortion(const Image *image, traits=GetPixelChannelMapTraits(image,channel); reconstruct_traits=GetPixelChannelMapTraits(reconstruct_image,channel); if ((traits == UndefinedPixelTrait) || - (reconstruct_traits == UndefinedPixelTrait)) - continue; - if ((reconstruct_traits & UpdatePixelTrait) == 0) + (reconstruct_traits == UndefinedPixelTrait) || + ((reconstruct_traits & UpdatePixelTrait) == 0)) continue; distance=QuantumScale*(p[i]-(MagickRealType) GetPixelChannel( reconstruct_image,channel,q)); @@ -911,9 +906,8 @@ static MagickBooleanType GetNormalizedCrossCorrelationDistortion( traits=GetPixelChannelMapTraits(image,channel); reconstruct_traits=GetPixelChannelMapTraits(reconstruct_image,channel); if ((traits == UndefinedPixelTrait) || - (reconstruct_traits == UndefinedPixelTrait)) - continue; - if ((reconstruct_traits & UpdatePixelTrait) == 0) + (reconstruct_traits == UndefinedPixelTrait) || + ((reconstruct_traits & UpdatePixelTrait) == 0)) continue; distortion[i]+=area*QuantumScale*(p[i]-image_statistics[i].mean)* (GetPixelChannel(reconstruct_image,channel,q)- @@ -1036,9 +1030,8 @@ static MagickBooleanType GetPeakAbsoluteDistortion(const Image *image, traits=GetPixelChannelMapTraits(image,channel); reconstruct_traits=GetPixelChannelMapTraits(reconstruct_image,channel); if ((traits == UndefinedPixelTrait) || - (reconstruct_traits == UndefinedPixelTrait)) - continue; - if ((reconstruct_traits & UpdatePixelTrait) == 0) + (reconstruct_traits == UndefinedPixelTrait) || + ((reconstruct_traits & UpdatePixelTrait) == 0)) continue; distance=QuantumScale*fabs(p[i]-(MagickRealType) GetPixelChannel( reconstruct_image,channel,q)); @@ -1450,9 +1443,8 @@ MagickExport MagickBooleanType IsImagesEqual(Image *image, traits=GetPixelChannelMapTraits(image,channel); reconstruct_traits=GetPixelChannelMapTraits(reconstruct_image,channel); if ((traits == UndefinedPixelTrait) || - (reconstruct_traits == UndefinedPixelTrait)) - continue; - if ((reconstruct_traits & UpdatePixelTrait) == 0) + (reconstruct_traits == UndefinedPixelTrait) || + ((reconstruct_traits & UpdatePixelTrait) == 0)) continue; distance=fabs(p[i]-(MagickRealType) GetPixelChannel(reconstruct_image, channel,q)); @@ -1649,9 +1641,8 @@ MagickExport Image *SimilarityImage(Image *image,const Image *reference, traits=GetPixelChannelMapTraits(image,channel); similarity_traits=GetPixelChannelMapTraits(similarity_image,channel); if ((traits == UndefinedPixelTrait) || - (similarity_traits == UndefinedPixelTrait)) - continue; - if ((similarity_traits & UpdatePixelTrait) == 0) + (similarity_traits == UndefinedPixelTrait) || + ((similarity_traits & UpdatePixelTrait) == 0)) continue; SetPixelChannel(similarity_image,channel,ClampToQuantum(QuantumRange- QuantumRange*similarity),q); diff --git a/MagickCore/composite.c b/MagickCore/composite.c index 71acbb3e4..7d62cefda 100644 --- a/MagickCore/composite.c +++ b/MagickCore/composite.c @@ -1272,8 +1272,7 @@ MagickExport MagickBooleanType CompositeImage(Image *image, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - composite_traits=GetPixelChannelMapTraits(composite_image, - channel); + composite_traits=GetPixelChannelMapTraits(composite_image,channel); if ((traits == UndefinedPixelTrait) || (composite_traits == UndefinedPixelTrait)) continue; diff --git a/MagickCore/decorate.c b/MagickCore/decorate.c index d0b30bfa3..bfacdf4cd 100644 --- a/MagickCore/decorate.c +++ b/MagickCore/decorate.c @@ -718,10 +718,10 @@ MagickExport MagickBooleanType RaiseImage(Image *image, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if ((traits & UpdatePixelTrait) != 0) - q[i]=ClampToQuantum(QuantumScale*((MagickRealType) q[i]* - HighlightFactor+(MagickRealType) foreground*(QuantumRange- - HighlightFactor))); + if ((traits & UpdatePixelTrait) == 0) + continue; + q[i]=ClampToQuantum(QuantumScale*((MagickRealType) q[i]*HighlightFactor+ + (MagickRealType) foreground*(QuantumRange-HighlightFactor))); } q+=GetPixelChannels(image); } @@ -742,10 +742,11 @@ MagickExport MagickBooleanType RaiseImage(Image *image, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if ((traits & UpdatePixelTrait) != 0) - q[i]=ClampToQuantum(QuantumScale*((MagickRealType) q[i]* - AccentuateFactor+(MagickRealType) foreground*(QuantumRange- - AccentuateFactor))); + if ((traits & UpdatePixelTrait) == 0) + continue; + q[i]=ClampToQuantum(QuantumScale*((MagickRealType) q[i]* + AccentuateFactor+(MagickRealType) foreground*(QuantumRange- + AccentuateFactor))); } q+=GetPixelChannels(image); } @@ -766,10 +767,10 @@ MagickExport MagickBooleanType RaiseImage(Image *image, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if ((traits & UpdatePixelTrait) != 0) - q[i]=ClampToQuantum(QuantumScale*((MagickRealType) q[i]* - ShadowFactor+(MagickRealType) background*(QuantumRange- - ShadowFactor))); + if ((traits & UpdatePixelTrait) == 0) + continue; + q[i]=ClampToQuantum(QuantumScale*((MagickRealType) q[i]*ShadowFactor+ + (MagickRealType) background*(QuantumRange-ShadowFactor))); } q+=GetPixelChannels(image); } @@ -822,10 +823,10 @@ MagickExport MagickBooleanType RaiseImage(Image *image, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if ((traits & UpdatePixelTrait) != 0) - q[i]=ClampToQuantum(QuantumScale*((MagickRealType) q[i]* - HighlightFactor+(MagickRealType) foreground*(QuantumRange- - HighlightFactor))); + if ((traits & UpdatePixelTrait) == 0) + continue; + q[i]=ClampToQuantum(QuantumScale*((MagickRealType) q[i]*HighlightFactor+ + (MagickRealType) foreground*(QuantumRange-HighlightFactor))); } q+=GetPixelChannels(image); } @@ -848,10 +849,10 @@ MagickExport MagickBooleanType RaiseImage(Image *image, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if ((traits & UpdatePixelTrait) != 0) - q[i]=ClampToQuantum(QuantumScale*((MagickRealType) q[i]* - ShadowFactor+(MagickRealType) background*(QuantumRange- - ShadowFactor))); + if ((traits & UpdatePixelTrait) == 0) + continue; + q[i]=ClampToQuantum(QuantumScale*((MagickRealType) q[i]*ShadowFactor+ + (MagickRealType) background*(QuantumRange-ShadowFactor))); } q+=GetPixelChannels(image); } @@ -904,10 +905,10 @@ MagickExport MagickBooleanType RaiseImage(Image *image, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if ((traits & UpdatePixelTrait) != 0) - q[i]=ClampToQuantum(QuantumScale*((MagickRealType) q[i]* - HighlightFactor+(MagickRealType) foreground*(QuantumRange- - HighlightFactor))); + if ((traits & UpdatePixelTrait) == 0) + continue; + q[i]=ClampToQuantum(QuantumScale*((MagickRealType) q[i]*HighlightFactor+ + (MagickRealType) foreground*(QuantumRange-HighlightFactor))); } q+=GetPixelChannels(image); } @@ -923,10 +924,10 @@ MagickExport MagickBooleanType RaiseImage(Image *image, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if ((traits & UpdatePixelTrait) != 0) - q[i]=ClampToQuantum(QuantumScale*((MagickRealType) q[i]* - TroughFactor+(MagickRealType) background*(QuantumRange- - TroughFactor))); + if ((traits & UpdatePixelTrait) == 0) + continue; + q[i]=ClampToQuantum(QuantumScale*((MagickRealType) q[i]*TroughFactor+ + (MagickRealType) background*(QuantumRange-TroughFactor))); } q+=GetPixelChannels(image); } @@ -947,10 +948,10 @@ MagickExport MagickBooleanType RaiseImage(Image *image, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if ((traits & UpdatePixelTrait) != 0) - q[i]=ClampToQuantum(QuantumScale*((MagickRealType) q[i]* - ShadowFactor+(MagickRealType) background*(QuantumRange- - ShadowFactor))); + if ((traits & UpdatePixelTrait) == 0) + continue; + q[i]=ClampToQuantum(QuantumScale*((MagickRealType) q[i]*ShadowFactor+ + (MagickRealType) background*(QuantumRange-ShadowFactor))); } q+=GetPixelChannels(image); } diff --git a/MagickCore/effect.c b/MagickCore/effect.c index e396ba464..3127dcd4c 100644 --- a/MagickCore/effect.c +++ b/MagickCore/effect.c @@ -344,14 +344,8 @@ MagickExport Image *AdaptiveBlurImage(const Image *image,const double radius, (ssize_t) ((width-j)/2L),width-j,width-j,exception); if (p == (const Quantum *) NULL) break; - center=(ssize_t) GetPixelChannels(image)*(width-j)* - ((width-j)/2L)+GetPixelChannels(image)*((width-j)/2L); - if (GetPixelMask(image,q) != 0) - { - q+=GetPixelChannels(blur_image); - r+=GetPixelChannels(edge_image); - continue; - } + center=(ssize_t) GetPixelChannels(image)*(width-j)*((width-j)/2L)+ + GetPixelChannels(image)*((width-j)/2L); for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -384,7 +378,8 @@ MagickExport Image *AdaptiveBlurImage(const Image *image,const double radius, if ((traits == UndefinedPixelTrait) || (blur_traits == UndefinedPixelTrait)) continue; - if ((blur_traits & CopyPixelTrait) != 0) + if (((blur_traits & CopyPixelTrait) != 0) || + (GetPixelMask(image,q) != 0)) { SetPixelChannel(blur_image,channel,p[center+i],q); continue; @@ -672,14 +667,8 @@ MagickExport Image *AdaptiveSharpenImage(const Image *image,const double radius, (ssize_t) ((width-j)/2L),width-j,width-j,exception); if (p == (const Quantum *) NULL) break; - center=(ssize_t) GetPixelChannels(image)*(width-j)* - ((width-j)/2L)+GetPixelChannels(image)*((width-j)/2); - if (GetPixelMask(sharp_image,q) != 0) - { - q+=GetPixelChannels(sharp_image); - r+=GetPixelChannels(edge_image); - continue; - } + center=(ssize_t) GetPixelChannels(image)*(width-j)*((width-j)/2L)+ + GetPixelChannels(image)*((width-j)/2); for (i=0; i < (ssize_t) GetPixelChannels(sharp_image); i++) { MagickRealType @@ -712,7 +701,8 @@ MagickExport Image *AdaptiveSharpenImage(const Image *image,const double radius, if ((traits == UndefinedPixelTrait) || (sharp_traits == UndefinedPixelTrait)) continue; - if ((sharp_traits & CopyPixelTrait) != 0) + if (((sharp_traits & CopyPixelTrait) != 0) || + (GetPixelMask(image,q) != 0)) { SetPixelChannel(sharp_image,channel,p[center+i],q); continue; @@ -984,12 +974,6 @@ MagickExport Image *BlurImage(const Image *image,const double radius, register ssize_t i; - if (GetPixelMask(image,p) != 0) - { - p+=GetPixelChannels(image); - q+=GetPixelChannels(blur_image); - continue; - } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -1019,7 +1003,8 @@ MagickExport Image *BlurImage(const Image *image,const double radius, if ((traits == UndefinedPixelTrait) || (blur_traits == UndefinedPixelTrait)) continue; - if ((blur_traits & CopyPixelTrait) != 0) + if (((blur_traits & CopyPixelTrait) != 0) || + (GetPixelMask(image,p) != 0)) { SetPixelChannel(blur_image,channel,p[center+i],q); continue; @@ -1112,12 +1097,6 @@ MagickExport Image *BlurImage(const Image *image,const double radius, register ssize_t i; - if (GetPixelMask(blur_image,p) != 0) - { - p+=GetPixelChannels(blur_image); - q+=GetPixelChannels(blur_image); - continue; - } for (i=0; i < (ssize_t) GetPixelChannels(blur_image); i++) { MagickRealType @@ -1147,7 +1126,8 @@ MagickExport Image *BlurImage(const Image *image,const double radius, if ((traits == UndefinedPixelTrait) || (blur_traits == UndefinedPixelTrait)) continue; - if ((blur_traits & CopyPixelTrait) != 0) + if (((blur_traits & CopyPixelTrait) != 0) || + (GetPixelMask(blur_image,p) != 0)) { SetPixelChannel(blur_image,channel,p[center+i],q); continue; @@ -1360,12 +1340,6 @@ MagickExport Image *ConvolveImage(const Image *image, register ssize_t i; - if (GetPixelMask(image,p) != 0) - { - p+=GetPixelChannels(image); - q+=GetPixelChannels(convolve_image); - continue; - } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -1398,7 +1372,8 @@ MagickExport Image *ConvolveImage(const Image *image, if ((traits == UndefinedPixelTrait) || (convolve_traits == UndefinedPixelTrait)) continue; - if ((convolve_traits & CopyPixelTrait) != 0) + if (((convolve_traits & CopyPixelTrait) != 0) || + (GetPixelMask(image,p) != 0)) { SetPixelChannel(convolve_image,channel,p[center+i],q); continue; @@ -2212,12 +2187,6 @@ MagickExport Image *MotionBlurImage(const Image *image,const double radius, register ssize_t i; - if (GetPixelMask(image,p) != 0) - { - p+=GetPixelChannels(image); - q+=GetPixelChannels(blur_image); - continue; - } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -2247,7 +2216,8 @@ MagickExport Image *MotionBlurImage(const Image *image,const double radius, if ((traits == UndefinedPixelTrait) || (blur_traits == UndefinedPixelTrait)) continue; - if ((blur_traits & CopyPixelTrait) != 0) + if (((blur_traits & CopyPixelTrait) != 0) || + (GetPixelMask(image,p) != 0)) { SetPixelChannel(blur_image,channel,p[i],q); continue; @@ -3016,12 +2986,6 @@ MagickExport Image *RadialBlurImage(const Image *image,const double angle, if (step >= n) step=n-1; } - if (GetPixelMask(image,p) != 0) - { - p+=GetPixelChannels(image); - q+=GetPixelChannels(blur_image); - continue; - } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -3047,7 +3011,8 @@ MagickExport Image *RadialBlurImage(const Image *image,const double angle, if ((traits == UndefinedPixelTrait) || (blur_traits == UndefinedPixelTrait)) continue; - if ((blur_traits & CopyPixelTrait) != 0) + if (((blur_traits & CopyPixelTrait) != 0) || + (GetPixelMask(image,p) != 0)) { SetPixelChannel(blur_image,channel,p[i],q); continue; @@ -3298,12 +3263,6 @@ MagickExport Image *SelectiveBlurImage(const Image *image,const double radius, register ssize_t i; - if (GetPixelMask(image,p) != 0) - { - p+=GetPixelChannels(image); - q+=GetPixelChannels(blur_image); - continue; - } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -3337,7 +3296,8 @@ MagickExport Image *SelectiveBlurImage(const Image *image,const double radius, if ((traits == UndefinedPixelTrait) || (blur_traits == UndefinedPixelTrait)) continue; - if ((blur_traits & CopyPixelTrait) != 0) + if (((blur_traits & CopyPixelTrait) != 0) || + (GetPixelMask(image,p) != 0)) { SetPixelChannel(blur_image,channel,p[center+i],q); continue; @@ -3590,14 +3550,6 @@ MagickExport Image *ShadeImage(const Image *image,const MagickBooleanType gray, shade=distance/sqrt((double) normal_distance); } } - if (GetPixelMask(image,pre) != 0) - { - pre+=GetPixelChannels(image); - center+=GetPixelChannels(image); - post+=GetPixelChannels(image); - q+=GetPixelChannels(shade_image); - continue; - } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { PixelChannel @@ -3613,7 +3565,8 @@ MagickExport Image *ShadeImage(const Image *image,const MagickBooleanType gray, if ((traits == UndefinedPixelTrait) || (shade_traits == UndefinedPixelTrait)) continue; - if ((shade_traits & CopyPixelTrait) != 0) + if (((shade_traits & CopyPixelTrait) != 0) || + (GetPixelMask(image,pre) != 0)) { SetPixelChannel(shade_image,channel,center[i],q); continue; @@ -4009,12 +3962,6 @@ MagickExport Image *UnsharpMaskImage(const Image *image,const double radius, register ssize_t i; - if (GetPixelMask(image,p) != 0) - { - p+=GetPixelChannels(image); - q+=GetPixelChannels(unsharp_image); - continue; - } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -4033,7 +3980,8 @@ MagickExport Image *UnsharpMaskImage(const Image *image,const double radius, if ((traits == UndefinedPixelTrait) || (unsharp_traits == UndefinedPixelTrait)) continue; - if ((unsharp_traits & CopyPixelTrait) != 0) + if (((unsharp_traits & CopyPixelTrait) != 0) || + (GetPixelMask(image,p) != 0)) { SetPixelChannel(unsharp_image,channel,p[i],q); continue; diff --git a/MagickCore/enhance.c b/MagickCore/enhance.c index c62b3f01b..461ce27c7 100644 --- a/MagickCore/enhance.c +++ b/MagickCore/enhance.c @@ -1245,9 +1245,10 @@ MagickExport MagickBooleanType ContrastStretchImage(Image *image, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if (((traits & UpdatePixelTrait) != 0) && (black[i] != white[i])) - q[i]=ClampToQuantum(stretch_map[GetPixelChannels(image)* - ScaleQuantumToMap(q[i])+i]); + if (((traits & UpdatePixelTrait) == 0) || (black[i] == white[i])) + continue; + q[i]=ClampToQuantum(stretch_map[GetPixelChannels(image)* + ScaleQuantumToMap(q[i])+i]); } q+=GetPixelChannels(image); } @@ -1719,9 +1720,10 @@ MagickExport MagickBooleanType EqualizeImage(Image *image, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if (((traits & UpdatePixelTrait) != 0) && (black[i] != white[i])) - q[i]=ClampToQuantum(equalize_map[GetPixelChannels(image)* - ScaleQuantumToMap(q[i])+i]); + if (((traits & UpdatePixelTrait) == 0) || (black[i] == white[i])) + continue; + q[i]=ClampToQuantum(equalize_map[GetPixelChannels(image)* + ScaleQuantumToMap(q[i])+i]); } q+=GetPixelChannels(image); } @@ -1892,8 +1894,9 @@ MagickExport MagickBooleanType GammaImage(Image *image,const double gamma, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if ((traits & UpdatePixelTrait) != 0) - q[i]=gamma_map[ScaleQuantumToMap(q[i])]; + if ((traits & UpdatePixelTrait) == 0) + continue; + q[i]=gamma_map[ScaleQuantumToMap(q[i])]; } q+=GetPixelChannels(image); } @@ -2269,7 +2272,7 @@ MagickExport MagickBooleanType LevelImage(Image *image,const double black_point, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if (traits == UndefinedPixelTrait) + if ((traits & UpdatePixelTrait) == 0) continue; q[i]=ClampToQuantum(LevelPixel(black_point,white_point,gamma, (MagickRealType) q[i])); @@ -2435,7 +2438,7 @@ MagickExport MagickBooleanType LevelizeImage(Image *image, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if (traits == UndefinedPixelTrait) + if ((traits & UpdatePixelTrait) == 0) continue; q[i]=LevelizeValue(q[i]); } @@ -3120,8 +3123,9 @@ MagickExport MagickBooleanType NegateImage(Image *image, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if ((traits & UpdatePixelTrait) != 0) - q[i]=QuantumRange-q[i]; + if ((traits & UpdatePixelTrait) == 0) + continue; + q[i]=QuantumRange-q[i]; } q+=GetPixelChannels(image); } @@ -3172,6 +3176,11 @@ MagickExport MagickBooleanType NegateImage(Image *image, register ssize_t i; + if (GetPixelMask(image,q) != 0) + { + q+=GetPixelChannels(image); + continue; + } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { PixelChannel @@ -3182,7 +3191,7 @@ MagickExport MagickBooleanType NegateImage(Image *image, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if (((traits & UpdatePixelTrait) == 0) || (GetPixelMask(image,q) != 0)) + if ((traits & UpdatePixelTrait) == 0) continue; q[i]=QuantumRange-q[i]; } @@ -3413,8 +3422,9 @@ MagickExport MagickBooleanType SigmoidalContrastImage(Image *image, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if ((traits & UpdatePixelTrait) != 0) - q[i]=ClampToQuantum(sigmoidal_map[ScaleQuantumToMap(q[i])]); + if ((traits & UpdatePixelTrait) == 0) + continue; + q[i]=ClampToQuantum(sigmoidal_map[ScaleQuantumToMap(q[i])]); } q+=GetPixelChannels(image); } diff --git a/MagickCore/fx.c b/MagickCore/fx.c index 860900813..62529eed8 100644 --- a/MagickCore/fx.c +++ b/MagickCore/fx.c @@ -752,12 +752,6 @@ MagickExport Image *ColorizeImage(const Image *image,const char *blend, register ssize_t i; - if (GetPixelMask(image,p) != 0) - { - p+=GetPixelChannels(image); - q+=GetPixelChannels(colorize_image); - continue; - } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { PixelChannel @@ -773,7 +767,8 @@ MagickExport Image *ColorizeImage(const Image *image,const char *blend, if ((traits == UndefinedPixelTrait) || (colorize_traits == UndefinedPixelTrait)) continue; - if ((colorize_traits & CopyPixelTrait) != 0) + if (((colorize_traits & CopyPixelTrait) != 0) || + (GetPixelMask(image,p) != 0)) { SetPixelChannel(colorize_image,channel,p[i],q); continue; @@ -3105,12 +3100,6 @@ MagickExport Image *FxImage(const Image *image,const char *expression, register ssize_t i; - if (GetPixelMask(image,p) != 0) - { - p+=GetPixelChannels(image); - q+=GetPixelChannels(fx_image); - continue; - } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -3129,7 +3118,8 @@ MagickExport Image *FxImage(const Image *image,const char *expression, if ((traits == UndefinedPixelTrait) || (fx_traits == UndefinedPixelTrait)) continue; - if ((fx_traits & CopyPixelTrait) != 0) + if (((fx_traits & CopyPixelTrait) != 0) || + (GetPixelMask(image,p) != 0)) { SetPixelChannel(fx_image,channel,p[i],q); continue; @@ -3551,11 +3541,6 @@ MagickExport Image *MorphImages(const Image *image, register ssize_t i; - if (GetPixelMask(morph_image,p) != 0) - { - p+=GetPixelChannels(morph_image); - continue; - } for (i=0; i < (ssize_t) GetPixelChannels(morph_image); i++) { PixelChannel @@ -3571,7 +3556,8 @@ MagickExport Image *MorphImages(const Image *image, if ((traits == UndefinedPixelTrait) || (morph_traits == UndefinedPixelTrait)) continue; - if ((morph_traits & CopyPixelTrait) != 0) + if (((morph_traits & CopyPixelTrait) != 0) || + (GetPixelMask(image,p) != 0)) { SetPixelChannel(morph_image,channel,p[i],q); continue; diff --git a/MagickCore/paint.c b/MagickCore/paint.c index db11cb9de..22e3ac57a 100644 --- a/MagickCore/paint.c +++ b/MagickCore/paint.c @@ -583,8 +583,8 @@ MagickExport Image *OilPaintImage(const Image *image,const double radius, */ status=MagickTrue; progress=0; - center=(ssize_t) GetPixelChannels(image)*(image->columns+width)* - (width/2L)+GetPixelChannels(image)*(width/2L); + center=(ssize_t) GetPixelChannels(image)*(image->columns+width)*(width/2L)+ + GetPixelChannels(image)*(width/2L); image_view=AcquireCacheView(image); paint_view=AcquireCacheView(paint_image); #if defined(MAGICKCORE_OPENMP_SUPPORT) @@ -653,12 +653,6 @@ MagickExport Image *OilPaintImage(const Image *image,const double radius, } k+=(ssize_t) (image->columns+width); } - if (GetPixelMask(image,p) != 0) - { - p+=GetPixelChannels(image); - q+=GetPixelChannels(paint_image); - continue; - } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { PixelChannel @@ -674,7 +668,8 @@ MagickExport Image *OilPaintImage(const Image *image,const double radius, if ((traits == UndefinedPixelTrait) || (paint_traits == UndefinedPixelTrait)) continue; - if ((paint_traits & CopyPixelTrait) != 0) + if (((paint_traits & CopyPixelTrait) != 0) || + (GetPixelMask(image,p) != 0)) { SetPixelChannel(paint_image,channel,p[center+i],q); continue; diff --git a/MagickCore/quantum-export.c b/MagickCore/quantum-export.c index f8141166c..1b0afda70 100644 --- a/MagickCore/quantum-export.c +++ b/MagickCore/quantum-export.c @@ -3253,8 +3253,9 @@ MagickExport size_t ExportQuantumPixels(const Image *image, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if ((traits & UpdatePixelTrait) != 0) - q[i]=ClampToQuantum(Sa*q[i]); + if ((traits & UpdatePixelTrait) == 0) + continue; + q[i]=ClampToQuantum(Sa*q[i]); } q+=GetPixelChannels(image); } diff --git a/MagickCore/quantum-import.c b/MagickCore/quantum-import.c index f9d311fb1..65efe5437 100644 --- a/MagickCore/quantum-import.c +++ b/MagickCore/quantum-import.c @@ -3620,8 +3620,9 @@ MagickExport size_t ImportQuantumPixels(const Image *image, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if ((traits & UpdatePixelTrait) != 0) - q[i]=ClampToQuantum(gamma*q[i]); + if ((traits & UpdatePixelTrait) == 0) + continue; + q[i]=ClampToQuantum(gamma*q[i]); } q+=GetPixelChannels(image); } diff --git a/MagickCore/resize.c b/MagickCore/resize.c index 1f665fe7c..531c30585 100644 --- a/MagickCore/resize.c +++ b/MagickCore/resize.c @@ -2254,11 +2254,6 @@ static MagickBooleanType HorizontalFilter(const ResizeFilter *resize_filter, register ssize_t i; - if (GetPixelMask(resize_image,q) != 0) - { - q+=GetPixelChannels(resize_image); - continue; - } for (i=0; i < (ssize_t) GetPixelChannels(resize_image); i++) { MagickRealType @@ -2285,7 +2280,8 @@ static MagickBooleanType HorizontalFilter(const ResizeFilter *resize_filter, if ((traits == UndefinedPixelTrait) || (resize_traits == UndefinedPixelTrait)) continue; - if ((resize_traits & CopyPixelTrait) != 0) + if (((resize_traits & CopyPixelTrait) != 0) || + (GetPixelMask(resize_image,q) != 0)) { j=(ssize_t) (MagickMin(MagickMax(bisect,(double) start),(double) stop-1.0)+0.5); @@ -2472,11 +2468,6 @@ static MagickBooleanType VerticalFilter(const ResizeFilter *resize_filter, register ssize_t i; - if (GetPixelMask(resize_image,q) != 0) - { - q+=GetPixelChannels(resize_image); - continue; - } for (i=0; i < (ssize_t) GetPixelChannels(resize_image); i++) { MagickRealType @@ -2503,7 +2494,8 @@ static MagickBooleanType VerticalFilter(const ResizeFilter *resize_filter, if ((traits == UndefinedPixelTrait) || (resize_traits == UndefinedPixelTrait)) continue; - if ((resize_traits & CopyPixelTrait) != 0) + if (((resize_traits & CopyPixelTrait) != 0) || + (GetPixelMask(resize_image,q) != 0)) { j=(ssize_t) (MagickMin(MagickMax(bisect,(double) start),(double) stop-1.0)+0.5); diff --git a/MagickCore/statistic.c b/MagickCore/statistic.c index c73fdfc10..fc8ed22b9 100644 --- a/MagickCore/statistic.c +++ b/MagickCore/statistic.c @@ -2282,12 +2282,6 @@ MagickExport Image *StatisticImage(const Image *image,const StatisticType type, register ssize_t i; - if (GetPixelMask(image,p) != 0) - { - p+=GetPixelChannels(image); - q+=GetPixelChannels(statistic_image); - continue; - } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { PixelChannel @@ -2315,7 +2309,8 @@ MagickExport Image *StatisticImage(const Image *image,const StatisticType type, if ((traits == UndefinedPixelTrait) || (statistic_traits == UndefinedPixelTrait)) continue; - if ((statistic_traits & CopyPixelTrait) != 0) + if (((statistic_traits & CopyPixelTrait) != 0) || + (GetPixelMask(image,p) != 0)) { SetPixelChannel(statistic_image,channel,p[center+i],q); continue; diff --git a/MagickCore/stream.c b/MagickCore/stream.c index 3aff7b9d5..7fe25e78f 100644 --- a/MagickCore/stream.c +++ b/MagickCore/stream.c @@ -457,6 +457,7 @@ static MagickBooleanType GetOneAuthenticPixelFromStream(Image *image, pixel[RedPixelChannel]=ClampToQuantum(image->background_color.red); pixel[GreenPixelChannel]=ClampToQuantum(image->background_color.green); pixel[BluePixelChannel]=ClampToQuantum(image->background_color.blue); + pixel[BlackPixelChannel]=ClampToQuantum(image->background_color.black); pixel[AlphaPixelChannel]=ClampToQuantum(image->background_color.alpha); return(MagickFalse); } @@ -523,6 +524,7 @@ static MagickBooleanType GetOneVirtualPixelFromStream(const Image *image, pixel[RedPixelChannel]=ClampToQuantum(image->background_color.red); pixel[GreenPixelChannel]=ClampToQuantum(image->background_color.green); pixel[BluePixelChannel]=ClampToQuantum(image->background_color.blue); + pixel[BlackPixelChannel]=ClampToQuantum(image->background_color.black); pixel[AlphaPixelChannel]=ClampToQuantum(image->background_color.alpha); return(MagickFalse); } diff --git a/MagickCore/threshold.c b/MagickCore/threshold.c index a1420e9d8..57e38dab0 100644 --- a/MagickCore/threshold.c +++ b/MagickCore/threshold.c @@ -238,12 +238,6 @@ MagickExport Image *AdaptiveThresholdImage(const Image *image, register ssize_t i; - if (GetPixelMask(image,p) != 0) - { - p+=GetPixelChannels(image); - q+=GetPixelChannels(threshold_image); - continue; - } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -272,7 +266,8 @@ MagickExport Image *AdaptiveThresholdImage(const Image *image, if ((traits == UndefinedPixelTrait) || (threshold_traits == UndefinedPixelTrait)) continue; - if ((threshold_traits & CopyPixelTrait) != 0) + if (((threshold_traits & CopyPixelTrait) != 0) || + (GetPixelMask(image,p) != 0)) { SetPixelChannel(threshold_image,channel,p[center+i],q); continue; @@ -428,9 +423,9 @@ MagickExport MagickBooleanType BilevelImage(Image *image,const double threshold, channel=GetPixelChannelMapChannel(image,i); traits=GetPixelChannelMapTraits(image,channel); - if ((traits & UpdatePixelTrait) != 0) - q[i]=(Quantum) ((MagickRealType) q[i] <= threshold ? 0 : - QuantumRange); + if ((traits & UpdatePixelTrait) == 0) + continue; + q[i]=(Quantum) ((MagickRealType) q[i] <= threshold ? 0 : QuantumRange); } q+=GetPixelChannels(image); } @@ -1684,12 +1679,12 @@ MagickExport MagickBooleanType WhiteThresholdImage(Image *image, ssize_t n; - n=0; if (GetPixelMask(image,q) != 0) { q+=GetPixelChannels(image); continue; } + n=0; for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { PixelChannel