]> granicus.if.org Git - imagemagick/blobdiff - MagickCore/signature.c
(no commit message)
[imagemagick] / MagickCore / signature.c
index 0a97cf4e5c7249f4244734c1afed8313ac0233dd..31ddd1c5bbed3f0a98f72f3f32517421dbf1e4e8 100644 (file)
@@ -16,7 +16,7 @@
 %                              December 1992                                  %
 %                                                                             %
 %                                                                             %
-%  Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization      %
+%  Copyright 1999-2012 ImageMagick Studio LLC, a non-profit organization      %
 %  dedicated to making software imaging solutions freely available.           %
 %                                                                             %
 %  You may not use this file except in compliance with the License.  You may  %
@@ -506,7 +506,7 @@ MagickExport MagickBooleanType SignatureImage(Image *image,
   signature=AcquireStringInfo(image->columns*GetPixelChannels(image)*
     sizeof(pixel));
   pixels=GetStringInfoDatum(signature);
-  image_view=AcquireCacheView(image);
+  image_view=AcquireVirtualCacheView(image,exception);
   for (y=0; y < (ssize_t) image->rows; y++)
   {
     register ssize_t
@@ -524,6 +524,11 @@ MagickExport MagickBooleanType SignatureImage(Image *image,
       register ssize_t
         i;
 
+      if (GetPixelMask(image,p) != 0)
+        {
+          p+=GetPixelChannels(image);
+          continue;
+        }
       for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
       {
         PixelChannel
@@ -539,8 +544,6 @@ MagickExport MagickBooleanType SignatureImage(Image *image,
         traits=GetPixelChannelMapTraits(image,channel);
         if (traits == UndefinedPixelTrait)
           continue;
-        if ((traits & UpdatePixelTrait) == 0)
-          continue;
         pixel=QuantumScale*p[i];
         for (j=0; j < (ssize_t) sizeof(pixel); j++)
           *q++=(unsigned char) (&pixel)[j];