]> granicus.if.org Git - imagemagick/blobdiff - MagickCore/draw.c
(no commit message)
[imagemagick] / MagickCore / draw.c
index 4f02ad50e2f76862c8fd472753adc5bfcb7fad55..6b754ba8eb93aada85a4f2eafdb8dd014193a8b1 100644 (file)
@@ -1148,7 +1148,8 @@ MagickExport MagickBooleanType DrawAffineImage(Image *image,
   /*
     Affine transform image.
   */
-  if (SetImageStorageClass(image,DirectClass) == MagickFalse)
+  exception=(&image->exception);
+  if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse)
     return(MagickFalse);
   status=MagickTrue;
   edge.x1=MagickMax(min.x,0.0);
@@ -1157,7 +1158,6 @@ MagickExport MagickBooleanType DrawAffineImage(Image *image,
   edge.y2=MagickMin(max.y,(double) image->rows-1.0);
   inverse_affine=InverseAffineMatrix(affine);
   GetPixelInfo(image,&zero);
-  exception=(&image->exception);
   image_view=AcquireCacheView(image);
   source_view=AcquireCacheView(source);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
@@ -1208,7 +1208,7 @@ MagickExport MagickBooleanType DrawAffineImage(Image *image,
         &composite);
       SetPixelPixelInfo(image,&composite,q);
       x_offset++;
-      q+=GetPixelComponents(image);
+      q+=GetPixelChannels(image);
     }
     if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse)
       status=MagickFalse;
@@ -1431,7 +1431,7 @@ MagickExport MagickBooleanType DrawClipPath(Image *image,
   (void) QueryColorDatabase("#ffffff",&clone_info->fill,&image->exception);
   clone_info->clip_mask=(char *) NULL;
   status=DrawImage(image->clip_mask,clone_info);
-  status|=NegateImage(image->clip_mask,MagickFalse);
+  status|=NegateImage(image->clip_mask,MagickFalse,&image->exception);
   clone_info=DestroyDrawInfo(clone_info);
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(DrawEvent,GetMagickModule(),"end clip-path");
@@ -1777,7 +1777,7 @@ MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info)
     }
   token=AcquireString(primitive);
   (void) QueryColorDatabase("#000000",&start_color,&image->exception);
-  if (SetImageStorageClass(image,DirectClass) == MagickFalse)
+  if (SetImageStorageClass(image,DirectClass,&image->exception) == MagickFalse)
     return(MagickFalse);
   status=MagickTrue;
   for (q=primitive; *q != '\0'; )
@@ -2494,7 +2494,7 @@ MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info)
             GetMagickToken(q,&q,token);
             (void) QueryColorDatabase(token,&stop_color,&image->exception);
             (void) GradientImage(image,LinearGradient,ReflectSpread,
-              &start_color,&stop_color);
+              &start_color,&stop_color,&image->exception);
             start_color=stop_color;
             GetMagickToken(q,&q,token);
             break;
@@ -3439,7 +3439,7 @@ MagickExport MagickBooleanType DrawGradientImage(Image *image,
       CompositePixelInfoOver(&composite,composite.alpha,&pixel,pixel.alpha,
         &pixel);
       SetPixelPixelInfo(image,&pixel,q);
-      q+=GetPixelComponents(image);
+      q+=GetPixelChannels(image);
     }
     if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse)
       status=MagickFalse;
@@ -3905,7 +3905,7 @@ static MagickBooleanType DrawPolygonPrimitive(Image *image,
               (void) GetStrokeColor(draw_info,x,y,&pixel);
               SetPixelPacket(image,&pixel,q);
             }
-          q+=GetPixelComponents(image);
+          q+=GetPixelChannels(image);
         }
         sync=SyncCacheViewAuthenticPixels(image_view,exception);
         if (sync == MagickFalse)
@@ -3922,7 +3922,7 @@ static MagickBooleanType DrawPolygonPrimitive(Image *image,
     Draw polygon or line.
   */
   if (image->matte == MagickFalse)
-    (void) SetImageAlphaChannel(image,OpaqueAlphaChannel);
+    (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
   #pragma omp parallel for schedule(dynamic,4) shared(status)
 #endif
@@ -3974,7 +3974,7 @@ static MagickBooleanType DrawPolygonPrimitive(Image *image,
       stroke_opacity=stroke_opacity*stroke_color.alpha;
       CompositePixelOver(image,&stroke_color,stroke_opacity,q,(MagickRealType)
         GetPixelAlpha(image,q),q);
-      q+=GetPixelComponents(image);
+      q+=GetPixelChannels(image);
     }
     if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse)
       status=MagickFalse;
@@ -4217,12 +4217,12 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image,
               GetPixelPacket(image,q,&pixel);
               if (IsFuzzyEquivalencePixelPacket(image,&pixel,&target) == MagickFalse)
                 {
-                  q+=GetPixelComponents(image);
+                  q+=GetPixelChannels(image);
                   continue;
                 }
               (void) GetFillColor(draw_info,x,y,&pixel);
               SetPixelPacket(image,&pixel,q);
-              q+=GetPixelComponents(image);
+              q+=GetPixelChannels(image);
             }
             sync=SyncCacheViewAuthenticPixels(image_view,exception);
             if (sync == MagickFalse)
@@ -4245,7 +4245,7 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image,
             }
           (void) FloodfillPaintImage(image,draw_info,&target,x,y,
             primitive_info->method == FloodfillMethod ? MagickFalse :
-            MagickTrue);
+            MagickTrue,exception);
           break;
         }
         case ResetMethod:
@@ -4272,7 +4272,7 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image,
             {
               (void) GetFillColor(draw_info,x,y,&pixel);
               SetPixelPacket(image,&pixel,q);
-              q+=GetPixelComponents(image);
+              q+=GetPixelChannels(image);
             }
             sync=SyncCacheViewAuthenticPixels(image_view,exception);
             if (sync == MagickFalse)
@@ -4286,7 +4286,7 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image,
     case MattePrimitive:
     {
       if (image->matte == MagickFalse)
-        (void) SetImageAlphaChannel(image,OpaqueAlphaChannel);
+        (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
       switch (primitive_info->method)
       {
         case PointMethod:
@@ -4333,12 +4333,12 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image,
               GetPixelPacket(image,q,&pixel);
               if (IsFuzzyEquivalencePixelPacket(image,&pixel,&target) == MagickFalse)
                 {
-                  q+=GetPixelComponents(image);
+                  q+=GetPixelChannels(image);
                   continue;
                 }
               (void) GetFillColor(draw_info,x,y,&pixel);
               SetPixelAlpha(image,pixel.alpha,q);
-              q+=GetPixelComponents(image);
+              q+=GetPixelChannels(image);
             }
             sync=SyncCacheViewAuthenticPixels(image_view,exception);
             if (sync == MagickFalse)
@@ -4349,6 +4349,9 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image,
         case FloodfillMethod:
         case FillToBorderMethod:
         {
+          ChannelType
+            channel_mask;
+
           PixelInfo
             target;
 
@@ -4359,11 +4362,11 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image,
               target.green=(MagickRealType) draw_info->border_color.green;
               target.blue=(MagickRealType) draw_info->border_color.blue;
             }
-          PushPixelComponentMap(image,AlphaChannel);
+          channel_mask=SetPixelChannelMask(image,AlphaChannel);
           (void) FloodfillPaintImage(image,draw_info,&target,x,y,
             primitive_info->method == FloodfillMethod ? MagickFalse :
-            MagickTrue);
-          PopPixelComponentMap(image);
+            MagickTrue,exception);
+          (void) SetPixelChannelMask(image,channel_mask);
           break;
         }
         case ResetMethod:
@@ -4390,7 +4393,7 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image,
             {
               (void) GetFillColor(draw_info,x,y,&pixel);
               SetPixelAlpha(image,pixel.alpha,q);
-              q+=GetPixelComponents(image);
+              q+=GetPixelChannels(image);
             }
             sync=SyncCacheViewAuthenticPixels(image_view,exception);
             if (sync == MagickFalse)
@@ -4475,7 +4478,8 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image,
           (void) TransformImage(&composite_image,(char *) NULL,geometry);
         }
       if (composite_image->matte == MagickFalse)
-        (void) SetImageAlphaChannel(composite_image,OpaqueAlphaChannel);
+        (void) SetImageAlphaChannel(composite_image,OpaqueAlphaChannel,
+          exception);
       if (draw_info->alpha != OpaqueAlpha)
         (void) SetImageOpacity(composite_image,draw_info->alpha);
       SetGeometry(image,&geometry);