]> granicus.if.org Git - imagemagick/commitdiff
...
authorCristy <urban-warrior@imagemagick.org>
Thu, 21 Sep 2017 23:49:22 +0000 (19:49 -0400)
committerCristy <urban-warrior@imagemagick.org>
Thu, 21 Sep 2017 23:49:22 +0000 (19:49 -0400)
MagickCore/pixel-accessor.h

index 00853ae1a80871956d5264049b094b347998e11d..c0b6d5fa05963eca573539f7bdb57480fe14e8e2 100644 (file)
@@ -465,6 +465,11 @@ static inline MagickBooleanType IsPixelEquivalent(
     beta,
     value;
 
+  value=(MagickRealType) p[image->channel_map[AlphaPixelChannel].offset];
+  alpha=image->alpha_trait == UndefinedPixelTrait ? OpaqueAlpha : value;
+  beta=q->alpha_trait == UndefinedPixelTrait ? OpaqueAlpha : q->alpha;
+  if ((alpha == TransparentOpacity) || (beta == TransparentOpacity))
+    return(MagickTrue);  /* no color component if pixel is transparent */
   value=(MagickRealType) p[image->channel_map[RedPixelChannel].offset];
   if (AbsolutePixelValue(value-q->red) >= MagickEpsilon)
     return(MagickFalse);
@@ -480,9 +485,6 @@ static inline MagickBooleanType IsPixelEquivalent(
       if (AbsolutePixelValue(value-q->black) >= MagickEpsilon)
         return(MagickFalse);
     }
-  value=(MagickRealType) p[image->channel_map[AlphaPixelChannel].offset];
-  alpha=image->alpha_trait == UndefinedPixelTrait ? OpaqueAlpha : value;
-  beta=q->alpha_trait == UndefinedPixelTrait ? OpaqueAlpha : q->alpha;
   if (AbsolutePixelValue(alpha-beta) >= MagickEpsilon)
     return(MagickFalse);
   return(MagickTrue);
@@ -513,6 +515,10 @@ static inline MagickBooleanType IsPixelInfoEquivalent(
     alpha,
     beta;
 
+  alpha=p->alpha_trait == UndefinedPixelTrait ? OpaqueAlpha : p->alpha;
+  beta=q->alpha_trait == UndefinedPixelTrait ? OpaqueAlpha : q->alpha;
+  if ((alpha == TransparentOpacity) || (beta == TransparentOpacity))
+    return(MagickTrue);  /* no color component if pixel is transparent */
   if (AbsolutePixelValue(p->red-q->red) >= MagickEpsilon)
     return(MagickFalse);
   if (AbsolutePixelValue(p->green-q->green) >= MagickEpsilon)
@@ -524,8 +530,6 @@ static inline MagickBooleanType IsPixelInfoEquivalent(
       if (AbsolutePixelValue(p->black-q->black) >= MagickEpsilon)
         return(MagickFalse);
     }
-  alpha=p->alpha_trait == UndefinedPixelTrait ? OpaqueAlpha : p->alpha;
-  beta=q->alpha_trait == UndefinedPixelTrait ? OpaqueAlpha : q->alpha;
   if (AbsolutePixelValue(alpha-beta) >= MagickEpsilon)
     return(MagickFalse);
   return(MagickTrue);