]> granicus.if.org Git - imagemagick/blobdiff - MagickCore/display.c
(no commit message)
[imagemagick] / MagickCore / display.c
index 00f7623007f6e5baa7efae8c2d514911cb7cf239..5beed0f8733c4e597824cb8092d759dffdfc7a60 100644 (file)
@@ -3708,10 +3708,10 @@ static MagickBooleanType XColorEditImage(Display *display,
             /*
               Update color information using point algorithm.
             */
-            if (SetImageStorageClass(*image,DirectClass) == MagickFalse)
+            if (SetImageStorageClass(*image,DirectClass,exception) == MagickFalse)
               return(MagickFalse);
             q=GetCacheViewAuthenticPixels(image_view,(ssize_t)x_offset,
-              (ssize_t)y_offset,1,1,exception);
+              (ssize_t) y_offset,1,1,exception);
             if (q == (Quantum *) NULL)
               break;
             SetPixelRed(*image,ScaleShortToQuantum(color.red),q);
@@ -3801,9 +3801,9 @@ static MagickBooleanType XColorEditImage(Display *display,
               (DrawInfo *) NULL);
             (void) QueryColorDatabase(resource_info->pen_colors[pen_id],
               &draw_info->fill,exception);
-            (void) FloodfillPaintImage(*image,DefaultChannels,draw_info,&target,
-              (ssize_t) x_offset,(ssize_t) y_offset,
-              method == FloodfillMethod ? MagickFalse : MagickTrue);
+            (void) FloodfillPaintImage(*image,draw_info,&target,(ssize_t)
+              x_offset,(ssize_t) y_offset,method == FloodfillMethod ?
+              MagickFalse : MagickTrue,exception);
             draw_info=DestroyDrawInfo(draw_info);
             break;
           }
@@ -3812,7 +3812,7 @@ static MagickBooleanType XColorEditImage(Display *display,
             /*
               Update color information using reset algorithm.
             */
-            if (SetImageStorageClass(*image,DirectClass) == MagickFalse)
+            if (SetImageStorageClass(*image,DirectClass,exception) == MagickFalse)
               return(MagickFalse);
             for (y=0; y < (int) (*image)->rows; y++)
             {
@@ -4295,13 +4295,13 @@ static MagickBooleanType XCompositeImage(Display *display,
       /*
         Create mattes for blending.
       */
-      (void) SetImageAlphaChannel(composite_image,OpaqueAlphaChannel);
+      exception=(&image->exception);
+      (void) SetImageAlphaChannel(composite_image,OpaqueAlphaChannel,exception);
       opacity=(Quantum) (ScaleQuantumToChar((Quantum) QuantumRange)-
         ((ssize_t) ScaleQuantumToChar((Quantum) QuantumRange)*blend)/100);
-      if (SetImageStorageClass(image,DirectClass) == MagickFalse)
+      if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse)
         return(MagickFalse);
       image->matte=MagickTrue;
-      exception=(&image->exception);
       image_view=AcquireCacheView(image);
       for (y=0; y < (int) image->rows; y++)
       {
@@ -5316,10 +5316,10 @@ static MagickBooleanType XCropImage(Display *display,
   /*
     Cut image.
   */
-  if (SetImageStorageClass(image,DirectClass) == MagickFalse)
+  exception=(&image->exception);
+  if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse)
     return(MagickFalse);
   image->matte=MagickTrue;
-  exception=(&image->exception);
   image_view=AcquireCacheView(image);
   for (y=0; y < (int) crop_info.height; y++)
   {
@@ -5718,7 +5718,7 @@ static MagickBooleanType XDrawEditImage(Display *display,
               (void) AcquireUniqueFileResource(filename);
               (void) FormatLocaleString(stipple_image->filename,MaxTextExtent,
                 "xbm:%s",filename);
-              (void) WriteImage(image_info,stipple_image);
+              (void) WriteImage(image_info,stipple_image,&(*image)->exception);
               stipple_image=DestroyImage(stipple_image);
               image_info=DestroyImageInfo(image_info);
               status=XReadBitmapFile(display,root_window,filename,&width,
@@ -7690,7 +7690,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       (void) CopyMagickString(modulate_factors,"100.0/100.0/",MaxTextExtent);
       (void) ConcatenateMagickString(modulate_factors,hue_percent,
         MaxTextExtent);
-      (void) ModulateImage(*image,modulate_factors);
+      (void) ModulateImage(*image,modulate_factors,&(*image)->exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
         break;
@@ -7718,7 +7718,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       (void) CopyMagickString(modulate_factors,"100.0/",MaxTextExtent);
       (void) ConcatenateMagickString(modulate_factors,saturation_percent,
         MaxTextExtent);
-      (void) ModulateImage(*image,modulate_factors);
+      (void) ModulateImage(*image,modulate_factors,&(*image)->exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
         break;
@@ -7745,7 +7745,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       XCheckRefreshWindows(display,windows);
       (void) CopyMagickString(modulate_factors,brightness_percent,
         MaxTextExtent);
-      (void) ModulateImage(*image,modulate_factors);
+      (void) ModulateImage(*image,modulate_factors,&(*image)->exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
         break;
@@ -7770,7 +7770,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       */
       XSetCursorState(display,windows,MagickTrue);
       XCheckRefreshWindows(display,windows);
-      (void) GammaImage(*image,atof(factor));
+      (void) GammaImage(*image,atof(factor),&(*image)->exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
         break;
@@ -7785,7 +7785,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       */
       XSetCursorState(display,windows,MagickTrue);
       XCheckRefreshWindows(display,windows);
-      (void) ContrastImage(*image,MagickTrue);
+      (void) ContrastImage(*image,MagickTrue,&(*image)->exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
         break;
@@ -7800,7 +7800,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       */
       XSetCursorState(display,windows,MagickTrue);
       XCheckRefreshWindows(display,windows);
-      (void) ContrastImage(*image,MagickFalse);
+      (void) ContrastImage(*image,MagickFalse,&(*image)->exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
         break;
@@ -7838,7 +7838,8 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
           white_point*=(double) (*image)->columns*(*image)->rows/100.0;
         }
       white_point=(MagickRealType) (*image)->columns*(*image)->rows-white_point;
-      (void) ContrastStretchImage(*image,black_point,white_point);
+      (void) ContrastStretchImage(*image,black_point,white_point,
+        &(*image)->exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
         break;
@@ -7875,7 +7876,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       if ((flags & PercentValue) != 0)
         geometry_info.sigma=1.0*QuantumRange*geometry_info.sigma/100.0;
       (void) SigmoidalContrastImage(*image,MagickTrue,geometry_info.rho,
-        geometry_info.sigma);
+        geometry_info.sigma,&(*image)->exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
         break;
@@ -7890,7 +7891,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       */
       XSetCursorState(display,windows,MagickTrue);
       XCheckRefreshWindows(display,windows);
-      (void) NormalizeImage(*image);
+      (void) NormalizeImage(*image,&(*image)->exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
         break;
@@ -7905,7 +7906,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       */
       XSetCursorState(display,windows,MagickTrue);
       XCheckRefreshWindows(display,windows);
-      (void) EqualizeImage(*image);
+      (void) EqualizeImage(*image,&(*image)->exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
         break;
@@ -7920,7 +7921,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       */
       XSetCursorState(display,windows,MagickTrue);
       XCheckRefreshWindows(display,windows);
-      (void) NegateImage(*image,MagickFalse);
+      (void) NegateImage(*image,MagickFalse,&(*image)->exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
         break;
@@ -8377,7 +8378,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       XCheckRefreshWindows(display,windows);
       (void) ParsePageGeometry(*image,bevel_width,&page_geometry,
         &(*image)->exception);
-      (void) RaiseImage(*image,&page_geometry,MagickTrue);
+      (void) RaiseImage(*image,&page_geometry,MagickTrue,&(*image)->exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
         break;
@@ -8653,7 +8654,8 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       XSetCursorState(display,windows,MagickTrue);
       XCheckRefreshWindows(display,windows);
       flags=ParseGeometry(radius,&geometry_info);
-      paint_image=OilPaintImage(*image,geometry_info.rho,&(*image)->exception);
+      paint_image=OilPaintImage(*image,geometry_info.rho,geometry_info.sigma,
+        &(*image)->exception);
       if (paint_image != (Image *) NULL)
         {
           *image=DestroyImage(*image);
@@ -8946,7 +8948,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       (void) AcquireUniqueFilename(filename);
       (void) FormatLocaleString((*image)->filename,MaxTextExtent,"launch:%s",
         filename);
-      status=WriteImage(image_info,*image);
+      status=WriteImage(image_info,*image,&(*image)->exception);
       if (status == MagickFalse)
         XNoticeWidget(display,windows,"Unable to launch image editor",
           (char *) NULL);
@@ -9025,7 +9027,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       (void) AcquireUniqueFilename(filename);
       (void) FormatLocaleString((*image)->filename,MaxTextExtent,"preview:%s",
         filename);
-      status=WriteImage(image_info,*image);
+      status=WriteImage(image_info,*image,&(*image)->exception);
       (void) CopyMagickString(image_info->filename,filename,MaxTextExtent);
       preview_image=ReadImage(image_info,&(*image)->exception);
       (void) RelinquishUniqueFileResource(filename);
@@ -9033,7 +9035,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
         break;
       (void) FormatLocaleString(preview_image->filename,MaxTextExtent,"show:%s",
         filename);
-      status=WriteImage(image_info,preview_image);
+      status=WriteImage(image_info,preview_image,&(*image)->exception);
       preview_image=DestroyImage(preview_image);
       if (status == MagickFalse)
         XNoticeWidget(display,windows,"Unable to show image preview",
@@ -9058,7 +9060,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       (void) AcquireUniqueFilename(filename);
       (void) FormatLocaleString((*image)->filename,MaxTextExtent,"histogram:%s",
         filename);
-      status=WriteImage(image_info,*image);
+      status=WriteImage(image_info,*image,&(*image)->exception);
       (void) CopyMagickString(image_info->filename,filename,MaxTextExtent);
       histogram_image=ReadImage(image_info,&(*image)->exception);
       (void) RelinquishUniqueFileResource(filename);
@@ -9066,7 +9068,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
         break;
       (void) FormatLocaleString(histogram_image->filename,MaxTextExtent,
         "show:%s",filename);
-      status=WriteImage(image_info,histogram_image);
+      status=WriteImage(image_info,histogram_image,&(*image)->exception);
       histogram_image=DestroyImage(histogram_image);
       if (status == MagickFalse)
         XNoticeWidget(display,windows,"Unable to show histogram",
@@ -9097,7 +9099,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       (void) AcquireUniqueFilename(filename);
       (void) FormatLocaleString((*image)->filename,MaxTextExtent,"matte:%s",
         filename);
-      status=WriteImage(image_info,*image);
+      status=WriteImage(image_info,*image,&(*image)->exception);
       (void) CopyMagickString(image_info->filename,filename,MaxTextExtent);
       matte_image=ReadImage(image_info,&(*image)->exception);
       (void) RelinquishUniqueFileResource(filename);
@@ -9105,7 +9107,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
         break;
       (void) FormatLocaleString(matte_image->filename,MaxTextExtent,"show:%s",
         filename);
-      status=WriteImage(image_info,matte_image);
+      status=WriteImage(image_info,matte_image,&(*image)->exception);
       matte_image=DestroyImage(matte_image);
       if (status == MagickFalse)
         XNoticeWidget(display,windows,"Unable to show matte",
@@ -10000,10 +10002,10 @@ static MagickBooleanType XMatteEditImage(Display *display,
         if ((x_offset >= (int) (*image)->columns) ||
             (y_offset >= (int) (*image)->rows))
           continue;
-        if (SetImageStorageClass(*image,DirectClass) == MagickFalse)
+        exception=(&(*image)->exception);
+        if (SetImageStorageClass(*image,DirectClass,exception) == MagickFalse)
           return(MagickFalse);
         (*image)->matte=MagickTrue;
-        exception=(&(*image)->exception);
         image_view=AcquireCacheView(*image);
         switch (method)
         {
@@ -10053,6 +10055,9 @@ static MagickBooleanType XMatteEditImage(Display *display,
           case FloodfillMethod:
           case FillToBorderMethod:
           {
+            ChannelType
+              channel_mask;
+
             DrawInfo
               *draw_info;
 
@@ -10077,9 +10082,11 @@ static MagickBooleanType XMatteEditImage(Display *display,
               (DrawInfo *) NULL);
             draw_info->fill.alpha=ClampToQuantum(InterpretLocaleValue(matte,
               (char **) NULL));
-            (void) FloodfillPaintImage(*image,OpacityChannel,draw_info,&target,
-              (ssize_t) x_offset,(ssize_t) y_offset,
-              method == FloodfillMethod ? MagickFalse : MagickTrue);
+            channel_mask=SetPixelChannelMask(*image,AlphaChannel); 
+            (void) FloodfillPaintImage(*image,draw_info,&target,(ssize_t)
+              x_offset,(ssize_t) y_offset,method == FloodfillMethod ?
+              MagickFalse : MagickTrue,exception);
+            (void) SetPixelChannelMap(*image,channel_mask);
             draw_info=DestroyDrawInfo(draw_info);
             break;
           }
@@ -10088,7 +10095,7 @@ static MagickBooleanType XMatteEditImage(Display *display,
             /*
               Update matte information using reset algorithm.
             */
-            if (SetImageStorageClass(*image,DirectClass) == MagickFalse)
+            if (SetImageStorageClass(*image,DirectClass,exception) == MagickFalse)
               return(MagickFalse);
             for (y=0; y < (int) (*image)->rows; y++)
             {
@@ -10912,7 +10919,7 @@ static MagickBooleanType XPrintImage(Display *display,
   (void) AcquireUniqueFilename(filename);
   (void) FormatLocaleString(print_image->filename,MaxTextExtent,"print:%s",
     filename);
-  status=WriteImage(image_info,print_image);
+  status=WriteImage(image_info,print_image,&image->exception);
   (void) RelinquishUniqueFileResource(filename);
   print_image=DestroyImage(print_image);
   image_info=DestroyImageInfo(image_info);
@@ -12514,7 +12521,7 @@ static MagickBooleanType XSaveImage(Display *display,
     Write image.
   */
   (void) CopyMagickString(save_image->filename,filename,MaxTextExtent);
-  status=WriteImage(image_info,save_image);
+  status=WriteImage(image_info,save_image,&image->exception);
   if (status != MagickFalse)
     image->taint=MagickFalse;
   save_image=DestroyImage(save_image);