]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sat, 4 Feb 2012 16:44:10 +0000 (16:44 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sat, 4 Feb 2012 16:44:10 +0000 (16:44 +0000)
14 files changed:
MagickCore/cache-view.c
MagickCore/compare.c
MagickCore/composite.c
MagickCore/decorate.c
MagickCore/effect.c
MagickCore/enhance.c
MagickCore/fx.c
MagickCore/paint.c
MagickCore/quantum-export.c
MagickCore/quantum-import.c
MagickCore/resize.c
MagickCore/statistic.c
MagickCore/stream.c
MagickCore/threshold.c

index c2062b6516c46e8422314fac0c4f7fe7aaed9960..baa6ada7c13d2c88c70bdbdac56dfcd175834284 100644 (file)
@@ -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++)
index a2f9b30c7589de2cc7bac833b0ceb89c3c01d7d3..029e9f0393f28949a138e198424f7fea5ff27128 100644 (file)
@@ -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);
index 71acbb3e4a6dd030f9abd56ea5ae46361fe0c7a4..7d62cefda18cbde4d04e03a0bc8add652444f5df 100644 (file)
@@ -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;
index d0b30bfa389302603ec225c9e6a7ed02ce063dec..bfacdf4cdf44a07edcb453765d918539dde48d86 100644 (file)
@@ -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);
     }
index e396ba46482b002248eebc92c0ba64d923cd5ebd..3127dcd4c0f2d6cb363b2b929c3dda27bc7bf95d 100644 (file)
@@ -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;
index c62b3f01b1799156978780bec11bd79da9af8b95..461ce27c70088ffc0c4ad48ac17b8e822ab49760 100644 (file)
@@ -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);
     }
index 860900813f8b7a8d8b464953ef3ca9275cb958c3..62529eed8d006f3a013f4c8bbb5e99d6fe10714b 100644 (file)
@@ -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;
index db11cb9de76bf796f68dfbf0542834b1704cb1a9..22e3ac57a17d51b8b6aa712323961ff15f108569 100644 (file)
@@ -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;
index f8141166cd753ba87adeaf5d21291871ba46ad09..1b0afda709ead6756aa22c2f063826ca482b71cb 100644 (file)
@@ -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);
       }
index f9d311fb1ff2b055693707dfbe3fe2304ba8a08f..65efe5437a15e4a7340eceac19d9459d83237214 100644 (file)
@@ -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);
       }
index 1f665fe7c4a73a560477539a6c299a1118ad91fc..531c30585a60bf9dcfd3ea5b88d38c4d70937eae 100644 (file)
@@ -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);
index c73fdfc10f5cd520ef72ef4ad5f337fba19baeb9..fc8ed22b9a379ad6878a06be4beaadca59d84ebd 100644 (file)
@@ -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;
index 3aff7b9d5490c2f3ef86f82a2490e2705d53b1d6..7fe25e78febc06752d3350fb8183590f33a74198 100644 (file)
@@ -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);
     }
index a1420e9d825947740e3f73a477964a393654c440..57e38dab08a4e8db668680284b8959e5b89546fb 100644 (file)
@@ -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