]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sun, 10 Feb 2013 02:36:22 +0000 (02:36 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sun, 10 Feb 2013 02:36:22 +0000 (02:36 +0000)
MagickCore/decorate.c

index cbac0e5025222e495ddb0bb34edefe432be13599..93f96a0063fd864c65d580ac8b00624c2f32b500 100644 (file)
@@ -448,16 +448,29 @@ MagickExport Image *FrameImage(const Image *image,const FrameInfo *frame_info,
           }
         for (x=0; x < (ssize_t) image->columns; x++)
         {
-          if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0)
-            SetPixelRed(frame_image,GetPixelRed(image,p),q);
-          if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0)
-            SetPixelGreen(frame_image,GetPixelGreen(image,p),q);
-          if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0)
-            SetPixelBlue(frame_image,GetPixelBlue(image,p),q);
-          if ((GetPixelBlackTraits(image) & UpdatePixelTrait) != 0)
-            SetPixelBlack(frame_image,GetPixelBlack(image,p),q);
-          if ((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0)
-            SetPixelAlpha(frame_image,GetPixelAlpha(image,p),q);
+          register ssize_t
+            i;
+
+          if (GetPixelMask(image,q) != 0)
+            {
+              p+=GetPixelChannels(image);
+              q+=GetPixelChannels(frame_image);
+              continue;
+            }
+          for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
+          {
+            PixelChannel
+              channel;
+
+            PixelTrait
+              traits;
+
+            channel=GetPixelChannelChannel(image,i);
+            traits=GetPixelChannelTraits(image,channel);
+            if ((traits & (CopyPixelTrait | UpdatePixelTrait)) == 0)
+              continue;
+            q[i]=p[i];
+          }
           p+=GetPixelChannels(image);
           q+=GetPixelChannels(frame_image);
         }