]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Wed, 22 Sep 2010 14:37:58 +0000 (14:37 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Wed, 22 Sep 2010 14:37:58 +0000 (14:37 +0000)
magick/fx.c
magick/paint.c
wand/mogrify.c

index 756ffce1c77b8acffeec14cba872bebba18dc318..8009e32242af4e4a0208f132f7ef214ef2cf677c 100644 (file)
@@ -4542,6 +4542,10 @@ MagickExport Image *SteganoImage(const Image *image,const Image *watermark,
   | (one << (size_t) (i)) : (size_t) (alpha) & ~(one << (size_t) (i)))
 #define SteganoImageTag  "Stegano/Image"
 
+  CacheView
+    *stegano_view,
+    *watermark_view;
+
   Image
     *stegano_image;
 
@@ -4600,17 +4604,20 @@ MagickExport Image *SteganoImage(const Image *image,const Image *watermark,
   j=0;
   depth=stegano_image->depth;
   k=image->offset;
+  watermark_view=AcquireCacheView(watermark);
+  stegano_view=AcquireCacheView(stegano_image);
   for (i=(ssize_t) depth-1; (i >= 0) && (j < (ssize_t) depth); i--)
   {
     for (y=0; (y < (ssize_t) watermark->rows) && (j < (ssize_t) depth); y++)
     {
       for (x=0; (x < (ssize_t) watermark->columns) && (j < (ssize_t) depth); x++)
       {
-        (void) GetOneVirtualPixel(watermark,x,y,&pixel,exception);
+        (void) GetOneCacheViewVirtualPixel(watermark_view,x,y,&pixel,exception);
         if ((k/(ssize_t) stegano_image->columns) >= (ssize_t) stegano_image->rows)
           break;
-        q=GetAuthenticPixels(stegano_image,k % (ssize_t) stegano_image->columns,
-          k/(ssize_t) stegano_image->columns,1,1,exception);
+        q=GetCacheViewAuthenticPixels(stegano_view,k % (ssize_t)
+          stegano_image->columns,k/(ssize_t) stegano_image->columns,1,1,
+          exception);
         if (q == (PixelPacket *) NULL)
           break;
         switch (c)
@@ -4631,7 +4638,7 @@ MagickExport Image *SteganoImage(const Image *image,const Image *watermark,
             break;
           }
         }
-        if (SyncAuthenticPixels(stegano_image,exception) == MagickFalse)
+        if (SyncCacheViewAuthenticPixels(stegano_view,exception) == MagickFalse)
           break;
         c++;
         if (c == 3)
@@ -4654,6 +4661,8 @@ MagickExport Image *SteganoImage(const Image *image,const Image *watermark,
           status=MagickFalse;
       }
   }
+  stegano_view=DestroyCacheView(stegano_view);
+  watermark_view=DestroyCacheView(watermark_view);
   if (stegano_image->storage_class == PseudoClass)
     (void) SyncImage(stegano_image);
   return(stegano_image);
index 6de39fbdd71df523610a1cb4674f0fbb19f4a503..a0c4a81d6647418a8b486377f4403f4408f931d1 100644 (file)
@@ -125,6 +125,10 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image,
     } \
 }
 
+  CacheView
+    *floodplane_view,
+    *image_view;
+
   ExceptionInfo
     *exception;
 
@@ -199,6 +203,8 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image,
   PushSegmentStack(y+1,x,x,-1);
   GetMagickPixelPacket(image,&fill);
   GetMagickPixelPacket(image,&pixel);
+  image_view=AcquireCacheView(image);
+  floodplane_view=AcquireCacheView(floodplane_image);
   while (s > segment_stack)
   {
     register const IndexPacket
@@ -224,12 +230,12 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image,
     /*
       Recolor neighboring pixels.
     */
-    p=GetVirtualPixels(image,0,y,(size_t) (x1+1),1,exception);
-    q=GetAuthenticPixels(floodplane_image,0,y,(size_t) (x1+1),1,
+    p=GetCacheViewVirtualPixels(image_view,0,y,(size_t) (x1+1),1,exception);
+    q=GetCacheViewAuthenticPixels(floodplane_view,0,y,(size_t) (x1+1),1,
       exception);
     if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL))
       break;
-    indexes=GetVirtualIndexQueue(image);
+    indexes=GetCacheViewVirtualIndexQueue(image_view);
     p+=x1;
     q+=x1;
     for (x=x1; x >= 0; x--)
@@ -243,7 +249,7 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image,
       p--;
       q--;
     }
-    if (SyncAuthenticPixels(floodplane_image,exception) == MagickFalse)
+    if (SyncCacheViewAuthenticPixels(floodplane_view,exception) == MagickFalse)
       break;
     skip=x >= x1 ? MagickTrue : MagickFalse;
     if (skip == MagickFalse)
@@ -259,13 +265,14 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image,
         {
           if (x < (ssize_t) image->columns)
             {
-              p=GetVirtualPixels(image,x,y,image->columns-x,1,exception);
-              q=GetAuthenticPixels(floodplane_image,x,y,image->columns-x,1,
+              p=GetCacheViewVirtualPixels(image_view,x,y,image->columns-x,1,
                 exception);
+              q=GetCacheViewAuthenticPixels(floodplane_view,x,y,
+                image->columns-x,1,exception);
               if ((p == (const PixelPacket *) NULL) ||
                   (q == (PixelPacket *) NULL))
                 break;
-              indexes=GetVirtualIndexQueue(image);
+              indexes=GetCacheViewVirtualIndexQueue(image_view);
               for ( ; x < (ssize_t) image->columns; x++)
               {
                 if (q->opacity == (Quantum) TransparentOpacity)
@@ -277,7 +284,7 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image,
                 p++;
                 q++;
               }
-              if (SyncAuthenticPixels(floodplane_image,exception) == MagickFalse)
+              if (SyncCacheViewAuthenticPixels(floodplane_view,exception) == MagickFalse)
                 break;
             }
           PushSegmentStack(y,start,x-1,offset);
@@ -288,12 +295,13 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image,
       x++;
       if (x <= x2)
         {
-          p=GetVirtualPixels(image,x,y,(size_t) (x2-x+1),1,exception);
-          q=GetAuthenticPixels(floodplane_image,x,y,(size_t) (x2-x+1),1,
+          p=GetCacheViewVirtualPixels(image_view,x,y,(size_t) (x2-x+1),1,
+            exception);
+          q=GetCacheViewAuthenticPixels(floodplane_view,x,y,(size_t) (x2-x+1),1,
             exception);
           if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL))
             break;
-          indexes=GetVirtualIndexQueue(image);
+          indexes=GetCacheViewVirtualIndexQueue(image_view);
           for ( ; x <= x2; x++)
           {
             if (q->opacity == (Quantum) TransparentOpacity)
@@ -325,11 +333,12 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image,
     /*
       Tile fill color onto floodplane.
     */
-    p=GetVirtualPixels(floodplane_image,0,y,image->columns,1,exception);
-    q=GetAuthenticPixels(image,0,y,image->columns,1,exception);
+    p=GetCacheViewVirtualPixels(floodplane_view,0,y,image->columns,1,
+      exception);
+    q=GetCacheViewAuthenticPixels(image_view,0,y,image->columns,1,exception);
     if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL))
       break;
-    indexes=GetAuthenticIndexQueue(image);
+    indexes=GetCacheViewAuthenticIndexQueue(image);
     for (x=0; x < (ssize_t) image->columns; x++)
     {
       if (p->opacity != OpaqueOpacity)
@@ -353,9 +362,11 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image,
       p++;
       q++;
     }
-    if (SyncAuthenticPixels(image,exception) == MagickFalse)
+    if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse)
       break;
   }
+  floodplane_view=DestroyCacheView(floodplane_view);
+  image_view=DestroyCacheView(image_view);
   segment_stack=(SegmentInfo *) RelinquishMagickMemory(segment_stack);
   floodplane_image=DestroyImage(floodplane_image);
   return(y == (ssize_t) image->rows ? MagickTrue : MagickFalse);
index 11e75d5985e3204d36634970b47372cbbc7fdd0e..efdf5db5503be661031696d4ab35a5b26f5c138b 100644 (file)
@@ -1060,8 +1060,11 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
           }
         if (LocaleCompare("clip-mask",option+1) == 0)
           {
+            CacheView
+              *mask_view;
+              
             Image
-              *mask;
+              *mask_image;
 
             ssize_t
               y;
@@ -1085,31 +1088,34 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
             /*
               Set the image mask.
             */
-            mask=GetImageCache(mogrify_info,argv[i+1],exception);
-            if (mask == (Image *) NULL)
+            mask_image=GetImageCache(mogrify_info,argv[i+1],exception);
+            if (mask_image == (Image *) NULL)
               break;
-            for (y=0; y < (ssize_t) mask->rows; y++)
+            if (SetImageStorageClass(mask_image,DirectClass) == MagickFalse)
+              return(MagickFalse);
+            mask_view=AcquireCacheView(mask_image);
+            for (y=0; y < (ssize_t) mask_image->rows; y++)
             {
-              q=GetAuthenticPixels(mask,0,y,mask->columns,1,exception);
+              q=GetCacheViewAuthenticPixels(mask_view,0,y,mask_image->columns,1,
+                exception);
               if (q == (PixelPacket *) NULL)
                 break;
-              for (x=0; x < (ssize_t) mask->columns; x++)
+              for (x=0; x < (ssize_t) mask_image->columns; x++)
               {
-                if (mask->matte == MagickFalse)
+                if (mask_image->matte == MagickFalse)
                   q->opacity=PixelIntensityToQuantum(q);
                 q->red=q->opacity;
                 q->green=q->opacity;
                 q->blue=q->opacity;
                 q++;
               }
-              if (SyncAuthenticPixels(mask,exception) == MagickFalse)
+              if (SyncCacheViewAuthenticPixels(mask_view,exception) == MagickFalse)
                 break;
             }
-            if (SetImageStorageClass(mask,DirectClass) == MagickFalse)
-              return(MagickFalse);
-            mask->matte=MagickTrue;
-            (void) SetImageClipMask(*image,mask);
-            mask=DestroyImage(mask);
+            mask_view=DestroyCacheView(mask_view);
+            mask_image->matte=MagickTrue;
+            (void) SetImageClipMask(*image,mask_image);
+            mask_image=DestroyImage(mask_image);
             InheritException(exception,&(*image)->exception);
             break;
           }