]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sat, 25 Jul 2015 16:12:33 +0000 (16:12 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sat, 25 Jul 2015 16:12:33 +0000 (16:12 +0000)
Magick++/lib/Image.cpp
Magick++/lib/Magick++/Include.h
MagickCore/draw.c
MagickCore/image.c
MagickCore/image.h
MagickWand/drawing-wand.c
MagickWand/magick-image.c
MagickWand/mogrify.c
MagickWand/operation.c
coders/msl.c
configure

index 28bf6f0835386046348731a904b8cc90e873a10b..4a257423b49d8c54ffa819fa14921cfe153c8cd2 100644 (file)
@@ -1095,9 +1095,10 @@ void Magick::Image::mask(const Magick::Image &mask_)
 
   GetPPException;
   if (mask_.isValid())
-    SetImageMask(image(),mask_.constImage(),exceptionInfo);
+    SetImageMask(image(),ReadPixelMask,mask_.constImage(),exceptionInfo);
   else
-    SetImageMask(image(),(MagickCore::Image *) NULL,exceptionInfo);
+    SetImageMask(image(),ReadPixelMask,(MagickCore::Image *) NULL,
+      exceptionInfo);
   ThrowImageException;
 }
 
index 964d1f5e0ba335eae978fda53f32aac45e3fb122..e6ff8782482254577385163d3846e374fb554473 100644 (file)
@@ -968,6 +968,11 @@ namespace Magick
   using MagickCore::RGBAQuantum;
   using MagickCore::CMYKQuantum;
 
+  // Pixel mask types
+  using MagickCore::UndefinedPixelMask;
+  using MagickCore::ReadPixelMask;
+  using MagickCore::WritePixelMask;
+
   // Rendering intents
   using MagickCore::RenderingIntent;
   using MagickCore::UndefinedIntent;
index 453fb3e45d897c1995cb712f1e0c29f52fe54d60..f767820bdaf42def5e0414b03a019daaae43bdd6 100644 (file)
@@ -1428,7 +1428,7 @@ MagickExport MagickBooleanType DrawClipPath(Image *image,
     exception);
   clone_info->clip_mask=(char *) NULL;
   status=NegateImage(clip_mask,MagickFalse,exception);
-  (void) SetImageMask(image,clip_mask,exception);
+  (void) SetImageMask(image,ReadPixelMask,clip_mask,exception);
   clip_mask=DestroyImage(clip_mask);
   status&=DrawImage(image,clone_info,exception);
   clone_info=DestroyDrawInfo(clone_info);
@@ -2262,7 +2262,8 @@ MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info,
                 if (graphic_context[n]->clip_mask != (char *) NULL)
                   if (LocaleCompare(graphic_context[n]->clip_mask,
                       graphic_context[n-1]->clip_mask) != 0)
-                    (void) SetImageMask(image,(Image *) NULL,exception);
+                    (void) SetImageMask(image,ReadPixelMask,(Image *) NULL,
+                      exception);
                 graphic_context[n]=DestroyDrawInfo(graphic_context[n]);
                 n--;
                 break;
index e5c4c40a8ffda26dc7e83fbf19d2f54aee55bd75..8a205703e41c73ee0552afe6f6e571b1a42ddad4 100644 (file)
@@ -747,7 +747,7 @@ MagickExport MagickBooleanType ClipImagePath(Image *image,const char *pathname,
     (void) NegateImage(clip_mask,MagickFalse,exception);
   (void) FormatLocaleString(clip_mask->magick_filename,MagickPathExtent,
     "8BIM:1999,2998:%s\nPS",pathname);
-  (void) SetImageMask(image,clip_mask,exception);
+  (void) SetImageMask(image,ReadPixelMask,clip_mask,exception);
   clip_mask=DestroyImage(clip_mask);
   return(MagickTrue);
 }
@@ -2899,20 +2899,22 @@ MagickExport void SetImageInfoFile(ImageInfo *image_info,FILE *file)
 %
 %  The format of the SetImageMask method is:
 %
-%      MagickBooleanType SetImageMask(Image *image,const Image *mask,
-%        ExceptionInfo *exception)
+%      MagickBooleanType SetImageMask(Image *image,const PixelMask type,
+%        const Image *mask,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
+%    o type: the mask type, ReadPixelMask or WritePixelMask.
+%
 %    o mask: the image mask.
 %
 %    o exception: return any errors or warnings in this structure.
 %
 */
-MagickExport MagickBooleanType SetImageMask(Image *image,const Image *mask,
-  ExceptionInfo *exception)
+MagickExport MagickBooleanType SetImageMask(Image *image,const PixelMask type,
+  const Image *mask,ExceptionInfo *exception)
 {
   CacheView
     *mask_view,
@@ -2933,10 +2935,18 @@ MagickExport MagickBooleanType SetImageMask(Image *image,const Image *mask,
   assert(image->signature == MagickCoreSignature);
   if (mask == (const Image *) NULL)
     {
-      image->read_mask=MagickFalse;
+      switch (type)
+      {
+        case WritePixelMask: image->write_mask=MagickFalse; break;
+        default: image->read_mask=MagickFalse; break;
+      }
       return(SyncImagePixelCache(image,exception));
     }
-  image->read_mask=MagickTrue;
+  switch (type)
+  {
+    case WritePixelMask: image->write_mask=MagickTrue; break;
+    default: image->read_mask=MagickTrue; break;
+  }
   if (SyncImagePixelCache(image,exception) == MagickFalse)
     return(MagickFalse);
   status=MagickTrue;
@@ -2968,7 +2978,19 @@ MagickExport MagickBooleanType SetImageMask(Image *image,const Image *mask,
       }
     for (x=0; x < (ssize_t) image->columns; x++)
     {
-      SetPixelReadMask(image,ClampToQuantum(GetPixelIntensity(mask,p)),q);
+      switch (type)
+      {
+        case WritePixelMask:
+        {
+          SetPixelWriteMask(image,ClampToQuantum(GetPixelIntensity(mask,p)),q);
+          break;
+        }
+        default:
+        {
+          SetPixelReadMask(image,ClampToQuantum(GetPixelIntensity(mask,p)),q);
+          break;
+        }
+      }
       p+=GetPixelChannels(mask);
       q+=GetPixelChannels(image);
     }
index 6d13fc16673f6bff8c8b3a8b8b101af7a2e9be47..56b6f68512367159c247f799bb7f8d3137509787 100644 (file)
@@ -546,7 +546,7 @@ extern MagickExport MagickBooleanType
   SetImageColor(Image *,const PixelInfo *,ExceptionInfo *),
   SetImageExtent(Image *,const size_t,const size_t,ExceptionInfo *),
   SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *),
-  SetImageMask(Image *,const Image *,ExceptionInfo *),
+  SetImageMask(Image *,const PixelMask type,const Image *,ExceptionInfo *),
   SetImageStorageClass(Image *,const ClassType,ExceptionInfo *),
   StripImage(Image *,ExceptionInfo *),
   SyncImage(Image *,ExceptionInfo *),
index b6d029a14f145f2fa7b777c0d85eff9c27dbbcb5..8becee05caca892fa25573ad6b2b32fecb5e5718 100644 (file)
@@ -6822,7 +6822,8 @@ WandExport MagickBooleanType PopDrawingWand(DrawingWand *wand)
   if (CurrentContext->clip_mask != (char *) NULL)
     if (LocaleCompare(CurrentContext->clip_mask,
         wand->graphic_context[wand->index-1]->clip_mask) != 0)
-      (void) SetImageMask(wand->image,(Image *) NULL);
+      (void) SetImageMask(wand->image,ReadPixelMask,(Image *) NULL,
+        wand->exception);
 #endif
   CurrentContext=DestroyDrawInfo(CurrentContext);
   wand->index--;
index 10a0fb2cde3e92b7783d7a11078c46d75180e368..3480e4a693cc6df111c474fbf70865d5ed4a5105 100644 (file)
@@ -9142,17 +9142,19 @@ WandExport ChannelType MagickSetImageChannelMask(MagickWand *wand,
 %  The format of the MagickSetImageMask method is:
 %
 %      MagickBooleanType MagickSetImageMask(MagickWand *wand,
-%        const MagickWand *clip_mask)
+%        const PixelMask type,const MagickWand *clip_mask)
 %
 %  A description of each parameter follows:
 %
 %    o wand: the magick wand.
 %
+%    o type: type of mask, ReadPixelMask or WritePixelMask.
+%
 %    o clip_mask: the clip_mask wand.
 %
 */
 WandExport MagickBooleanType MagickSetImageMask(MagickWand *wand,
-  const MagickWand *clip_mask)
+  const PixelMask type,const MagickWand *clip_mask)
 {
   assert(wand != (MagickWand *) NULL);
   assert(wand->signature == MagickWandSignature);
@@ -9164,7 +9166,7 @@ WandExport MagickBooleanType MagickSetImageMask(MagickWand *wand,
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",clip_mask->name);
   if (clip_mask->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",clip_mask->name);
-  return(SetImageMask(wand->images,clip_mask->images,wand->exception));
+  return(SetImageMask(wand->images,type,clip_mask->images,wand->exception));
 }
 \f
 /*
index 5a70a2cbafc7b5c7df44a2f6f465c935347ea171..8003e154d5da93c35285741a3377188fdfd0a321 100644 (file)
@@ -1057,7 +1057,8 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
             (void) SyncImageSettings(mogrify_info,*image,exception);
             if (*option == '+')
               {
-                (void) SetImageMask(*image,(Image *) NULL,exception);
+                (void) SetImageMask(*image,ReadPixelMask,(Image *) NULL,
+                  exception);
                 break;
               }
             (void) ClipImage(*image,exception);
@@ -1086,7 +1087,8 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
                 /*
                   Remove a mask.
                 */
-                (void) SetImageMask(*image,(Image *) NULL,exception);
+                (void) SetImageMask(*image,ReadPixelMask,(Image *) NULL,
+                  exception);
                 break;
               }
             /*
@@ -1120,7 +1122,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
             }
             mask_view=DestroyCacheView(mask_view);
             mask_image->alpha_trait=BlendPixelTrait;
-            (void) SetImageMask(*image,mask_image,exception);
+            (void) SetImageMask(*image,ReadPixelMask,mask_image,exception);
             break;
           }
         if (LocaleCompare("clip-path",option+1) == 0)
@@ -2111,7 +2113,8 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
                 /*
                   Remove a mask.
                 */
-                (void) SetImageMask(*image,(Image *) NULL,exception);
+                (void) SetImageMask(*image,ReadPixelMask,(Image *) NULL,
+                  exception);
                 break;
               }
             /*
@@ -2120,7 +2123,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
             mask=GetImageCache(mogrify_info,argv[i+1],exception);
             if (mask == (Image *) NULL)
               break;
-            (void) SetImageMask(*image,mask,exception);
+            (void) SetImageMask(*image,ReadPixelMask,mask,exception);
             mask=DestroyImage(mask);
             break;
           }
index f2bfd74eb9282115f4e1a416606fab677128926a..76b3da60f47a717e3beddba76a5623af69bcbcf9 100644 (file)
@@ -1986,7 +1986,7 @@ static MagickBooleanType CLISimpleOperatorImage(MagickCLI *cli_wand,
           if (IfNormalOp)
             (void) ClipImage(_image,_exception);
           else /* "+mask" remove the write mask */
-            (void) SetImageMask(_image,(Image *) NULL,_exception);
+            (void) SetImageMask(_image,ReadPixelMask,(Image *) NULL,_exception);
           break;
         }
       if (LocaleCompare("clip-mask",option+1) == 0)
@@ -2009,7 +2009,7 @@ static MagickBooleanType CLISimpleOperatorImage(MagickCLI *cli_wand,
 
           if (IfPlusOp) {
             /* use "+clip-mask" Remove the write mask for -clip-path */
-            (void) SetImageMask(_image,(Image *) NULL,_exception);
+            (void) SetImageMask(_image,ReadPixelMask,(Image *) NULL,_exception);
             break;
           }
           mask_image=GetImageCache(_image_info,arg1,_exception);
@@ -2041,7 +2041,7 @@ static MagickBooleanType CLISimpleOperatorImage(MagickCLI *cli_wand,
           mask_view=DestroyCacheView(mask_view);
           mask_image->alpha_trait=BlendPixelTrait;
           (void) SetImageColorspace(_image,GRAYColorspace,_exception);
-          (void) SetImageMask(_image,mask_image,_exception);
+          (void) SetImageMask(_image,ReadPixelMask,mask_image,_exception);
           mask_image=DestroyImage(mask_image);
           break;
         }
@@ -2746,14 +2746,15 @@ static MagickBooleanType CLISimpleOperatorImage(MagickCLI *cli_wand,
 
           if (IfPlusOp)
             { /* Remove a mask. */
-              (void) SetImageMask(_image,(Image *) NULL,_exception);
+              (void) SetImageMask(_image,ReadPixelMask,(Image *) NULL,
+                _exception);
               break;
             }
           /* Set the image mask. */
           mask=GetImageCache(_image_info,arg1,_exception);
           if (mask == (Image *) NULL)
             break;
-          (void) SetImageMask(_image,mask,_exception);
+          (void) SetImageMask(_image,ReadPixelMask,mask,_exception);
           mask=DestroyImage(mask);
           break;
         }
index a2fa2292bd432397b1ee1d542de247d1d73da303..6f024a52cb9e5946f809ca3dabc3f231cb40c809 100644 (file)
@@ -6021,8 +6021,8 @@ static void MSLStartElement(void *context,const xmlChar *tag,
                       exception);
                     if (LocaleCompare(property,value) == 0)
                       {
-                        SetImageMask(msl_info->image[n],msl_info->image[j],
-                          exception);
+                        SetImageMask(msl_info->image[n],ReadPixelMask,
+                          msl_info->image[j],exception);
                         break;
                       }
                   }
@@ -6039,8 +6039,8 @@ static void MSLStartElement(void *context,const xmlChar *tag,
                       exception);
                     if (LocaleCompare(property,value) == 0)
                       {
-                        SetImageMask(msl_info->image[n],msl_info->image[j],
-                          exception);
+                        SetImageMask(msl_info->image[n],ReadPixelMask,
+                          msl_info->image[j],exception);
                         break;
                       }
                   }
index 2c7af4043bd5135f37f0e8a10878867bb576c5ef..de94746638fa06cebe4af79a19570e4fc5c1892d 100755 (executable)
--- a/configure
+++ b/configure
@@ -4379,7 +4379,7 @@ MAGICK_PATCHLEVEL_VERSION=0
 
 MAGICK_VERSION=7.0.0-0
 
-MAGICK_SVN_REVISION=19161:19162
+MAGICK_SVN_REVISION=19272M
 
 
 # Substitute library versioning