]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sun, 11 Sep 2011 23:32:52 +0000 (23:32 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sun, 11 Sep 2011 23:32:52 +0000 (23:32 +0000)
MagickCore/fx.c
MagickCore/fx.h
MagickCore/pixel.c
MagickWand/magick-image.c
MagickWand/mogrify.c
MagickWand/pixel-wand.c
MagickWand/pixel-wand.h
PerlMagick/Magick.xs
PerlMagick/demo/demo.pl

index 60fef46c228bad3f1c4c33bf59012a2f20e5e5ab..a5cc296705af677a4c90e4fa8c8cdcc074249b99 100644 (file)
@@ -406,9 +406,8 @@ MagickExport Image *AddNoiseImage(const Image *image,const NoiseType noise_type,
           (image->colorspace == CMYKColorspace))
         SetPixelBlack(noise_image,ClampToQuantum(GenerateDifferentialNoise(
           random_info[id],GetPixelBlack(image,p),noise_type,attenuate)),q);
-      if ((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0)
-        SetPixelAlpha(noise_image,ClampToQuantum(GenerateDifferentialNoise(
-          random_info[id],GetPixelAlpha(image,p),noise_type,attenuate)),q);
+      if ((GetPixelAlphaTraits(image) & CopyPixelTrait) != 0)
+        SetPixelAlpha(noise_image,GetPixelAlpha(image,p),q);
       p+=GetPixelChannels(image);
       q+=GetPixelChannels(noise_image);
     }
@@ -5043,7 +5042,7 @@ MagickExport Image *SwirlImage(const Image *image,double degrees,
 %  The format of the TintImage method is:
 %
 %      Image *TintImage(const Image *image,const char *opacity,
-%        const PixelPacket tint,ExceptionInfo *exception)
+%        const PixelInfo *tint,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -5057,7 +5056,7 @@ MagickExport Image *SwirlImage(const Image *image,double degrees,
 %
 */
 MagickExport Image *TintImage(const Image *image,const char *opacity,
-  const PixelPacket tint,ExceptionInfo *exception)
+  const PixelInfo *tint,ExceptionInfo *exception)
 {
 #define TintImageTag  "Tint/Image"
 
@@ -5077,6 +5076,9 @@ MagickExport Image *TintImage(const Image *image,const char *opacity,
   MagickOffsetType
     progress;
 
+  MagickRealType
+    intensity;
+
   PixelInfo
     color_vector,
     pixel;
@@ -5109,6 +5111,7 @@ MagickExport Image *TintImage(const Image *image,const char *opacity,
   /*
     Determine RGB values of the color.
   */
+  GetPixelInfo(image,&pixel);
   flags=ParseGeometry(opacity,&geometry_info);
   pixel.red=geometry_info.rho;
   if ((flags & SigmaValue) != 0)
@@ -5123,12 +5126,12 @@ MagickExport Image *TintImage(const Image *image,const char *opacity,
     pixel.alpha=geometry_info.psi;
   else
     pixel.alpha=(MagickRealType) OpaqueAlpha;
-  color_vector.red=(MagickRealType) (pixel.red*tint.red/100.0-
-    GetPixelPacketIntensity(&tint));
-  color_vector.green=(MagickRealType) (pixel.green*tint.green/100.0-
-    GetPixelPacketIntensity(&tint));
-  color_vector.blue=(MagickRealType) (pixel.blue*tint.blue/100.0-
-    GetPixelPacketIntensity(&tint));
+  intensity=(MagickRealType) GetPixelInfoIntensity(tint);
+  color_vector.red=(MagickRealType) (pixel.red*tint->red/100.0-intensity);
+  color_vector.green=(MagickRealType) (pixel.green*tint->green/100.0-intensity);
+  color_vector.blue=(MagickRealType) (pixel.blue*tint->blue/100.0-intensity);
+  color_vector.black=(MagickRealType) (pixel.black*tint->black/100.0-intensity);
+  color_vector.alpha=(MagickRealType) (pixel.alpha*tint->alpha/100.0-intensity);
   /*
     Tint image.
   */
@@ -5168,19 +5171,36 @@ MagickExport Image *TintImage(const Image *image,const char *opacity,
       MagickRealType
         weight;
 
-      weight=QuantumScale*GetPixelRed(image,p)-0.5;
-      pixel.red=(MagickRealType) GetPixelRed(image,p)+color_vector.red*
-        (1.0-(4.0*(weight*weight)));
-      SetPixelRed(tint_image,ClampToQuantum(pixel.red),q);
-      weight=QuantumScale*GetPixelGreen(image,p)-0.5;
-      pixel.green=(MagickRealType) GetPixelGreen(image,p)+color_vector.green*
-        (1.0-(4.0*(weight*weight)));
-      SetPixelGreen(tint_image,ClampToQuantum(pixel.green),q);
-      weight=QuantumScale*GetPixelBlue(image,p)-0.5;
-      pixel.blue=(MagickRealType) GetPixelBlue(image,p)+color_vector.blue*
-        (1.0-(4.0*(weight*weight)));
-      SetPixelBlue(tint_image,ClampToQuantum(pixel.blue),q);
-      SetPixelAlpha(tint_image,GetPixelAlpha(image,p),q);
+      if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0)
+        {
+          weight=QuantumScale*GetPixelRed(image,p)-0.5;
+          pixel.red=(MagickRealType) GetPixelRed(image,p)+
+            color_vector.red*(1.0-(4.0*(weight*weight)));
+          SetPixelRed(tint_image,ClampToQuantum(pixel.red),q);
+        }
+      if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0)
+        {
+          weight=QuantumScale*GetPixelGreen(image,p)-0.5;
+          pixel.green=(MagickRealType) GetPixelGreen(image,p)+
+            color_vector.green*(1.0-(4.0*(weight*weight)));
+          SetPixelGreen(tint_image,ClampToQuantum(pixel.green),q);
+        }
+      if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0)
+        {
+          weight=QuantumScale*GetPixelBlue(image,p)-0.5;
+          pixel.blue=(MagickRealType) GetPixelBlue(image,p)+
+            color_vector.blue*(1.0-(4.0*(weight*weight)));
+          SetPixelBlue(tint_image,ClampToQuantum(pixel.blue),q);
+        }
+      if ((GetPixelBlackTraits(image) & UpdatePixelTrait) != 0)
+        {
+          weight=QuantumScale*GetPixelBlack(image,p)-0.5;
+          pixel.black=(MagickRealType) GetPixelBlack(image,p)+
+            color_vector.black*(1.0-(4.0*(weight*weight)));
+          SetPixelBlack(tint_image,ClampToQuantum(pixel.black),q);
+        }
+      if ((GetPixelAlphaTraits(image) & CopyPixelTrait) != 0)
+        SetPixelAlpha(tint_image,GetPixelAlpha(image,p),q);
       p+=GetPixelChannels(image);
       q+=GetPixelChannels(tint_image);
     }
index 33250defe90e485975f020c222908770cbcea7bf..f5f60a8e6742341fe8ea26a7b82fa0c5afe7d453 100644 (file)
@@ -58,7 +58,7 @@ extern MagickExport Image
   *StereoAnaglyphImage(const Image *,const Image *,const ssize_t,const ssize_t,
      ExceptionInfo *),
   *SwirlImage(const Image *,double,ExceptionInfo *),
-  *TintImage(const Image *,const char *,const PixelPacket,ExceptionInfo *),
+  *TintImage(const Image *,const char *,const PixelInfo *,ExceptionInfo *),
   *VignetteImage(const Image *,const double,const double,const ssize_t,
     const ssize_t,ExceptionInfo *),
   *WaveImage(const Image *,const double,const double,
index 9f9cf08f5852cc5a006d12d68718adf88d8e04c0..79c890b2e9ba642b2d3d76611b74b380c1ae53dd 100644 (file)
@@ -3927,7 +3927,7 @@ MagickExport MagickBooleanType InterpolatePixelChannel(const Image *image,
       delta.y=y-y_offset;
       luminance.x=GetPixelLuminance(image,p)-(double)
         GetPixelLuminance(image,p+3*GetPixelChannels(image));
-      luminance.y=GetPixelLuminance(image,p+1*GetPixelChannels(image))-(double)
+      luminance.y=GetPixelLuminance(image,p+GetPixelChannels(image))-(double)
         GetPixelLuminance(image,p+2*GetPixelChannels(image));
       if (fabs(luminance.x) < fabs(luminance.y))
         {
@@ -4247,8 +4247,8 @@ MagickExport MagickBooleanType InterpolatePixelChannels(const Image *source,
         delta.y=y-y_offset;
         epsilon.x=1.0-delta.x;
         epsilon.y=1.0-delta.y;
-        pixels[0]=(MagickRealType) p[0*GetPixelChannels(source)+i];
-        pixels[1]=(MagickRealType) p[1*GetPixelChannels(source)+i];
+        pixels[0]=(MagickRealType) p[i];
+        pixels[1]=(MagickRealType) p[GetPixelChannels(source)+i];
         pixels[2]=(MagickRealType) p[2*GetPixelChannels(source)+i];
         pixels[3]=(MagickRealType) p[3*GetPixelChannels(source)+i];
         if ((traits & BlendPixelTrait) == 0)
@@ -4260,10 +4260,8 @@ MagickExport MagickBooleanType InterpolatePixelChannels(const Image *source,
               pixels[3])));
             continue;
           }
-        alpha[0]=QuantumScale*GetPixelAlpha(source,p+0*
-          GetPixelChannels(source));
-        alpha[1]=QuantumScale*GetPixelAlpha(source,p+1*
-          GetPixelChannels(source));
+        alpha[0]=QuantumScale*GetPixelAlpha(source,p);
+        alpha[1]=QuantumScale*GetPixelAlpha(source,p+GetPixelChannels(source));
         alpha[2]=QuantumScale*GetPixelAlpha(source,p+2*
           GetPixelChannels(source));
         alpha[3]=QuantumScale*GetPixelAlpha(source,p+3*
@@ -4387,8 +4385,8 @@ MagickExport MagickBooleanType InterpolatePixelChannels(const Image *source,
         if ((traits == UndefinedPixelTrait) ||
             (destination_traits == UndefinedPixelTrait))
           continue;
-       pixels[0]=(MagickRealType) p[0*GetPixelChannels(source)+i];
-       pixels[1]=(MagickRealType) p[1*GetPixelChannels(source)+i];
+       pixels[0]=(MagickRealType) p[i];
+       pixels[1]=(MagickRealType) p[GetPixelChannels(source)+i];
        pixels[2]=(MagickRealType) p[2*GetPixelChannels(source)+i];
        pixels[3]=(MagickRealType) p[3*GetPixelChannels(source)+i];
        if ((traits & BlendPixelTrait) == 0)
@@ -4400,9 +4398,8 @@ MagickExport MagickBooleanType InterpolatePixelChannels(const Image *source,
          }
        else
          {
-           alpha[0]=QuantumScale*GetPixelAlpha(source,p+0*
-             GetPixelChannels(source));
-           alpha[1]=QuantumScale*GetPixelAlpha(source,p+1*
+           alpha[0]=QuantumScale*GetPixelAlpha(source,p);
+           alpha[1]=QuantumScale*GetPixelAlpha(source,p+
              GetPixelChannels(source));
            alpha[2]=QuantumScale*GetPixelAlpha(source,p+2*
              GetPixelChannels(source));
@@ -4413,7 +4410,7 @@ MagickExport MagickBooleanType InterpolatePixelChannels(const Image *source,
        delta.y=y-y_offset;
        luminance.x=GetPixelLuminance(source,p)-(double)
          GetPixelLuminance(source,p+3*GetPixelChannels(source));
-       luminance.y=GetPixelLuminance(source,p+1*GetPixelChannels(source))-
+       luminance.y=GetPixelLuminance(source,p+GetPixelChannels(source))-
          (double) GetPixelLuminance(source,p+2*GetPixelChannels(source));
        if (fabs(luminance.x) < fabs(luminance.y))
          {
@@ -4691,7 +4688,7 @@ MagickExport MagickBooleanType InterpolatePixelInfo(const Image *image,
           break;
         }
       AlphaBlendPixelInfo(image,p,pixels+0,alpha+0);
-      AlphaBlendPixelInfo(image,p+1*GetPixelChannels(image),pixels+1,alpha+1);
+      AlphaBlendPixelInfo(image,p+GetPixelChannels(image),pixels+1,alpha+1);
       AlphaBlendPixelInfo(image,p+2*GetPixelChannels(image),pixels+2,alpha+2);
       AlphaBlendPixelInfo(image,p+3*GetPixelChannels(image),pixels+3,alpha+3);
       AlphaBlendPixelInfo(image,p+4*GetPixelChannels(image),pixels+4,alpha+4);
@@ -4745,7 +4742,7 @@ MagickExport MagickBooleanType InterpolatePixelInfo(const Image *image,
           break;
         }
       AlphaBlendPixelInfo(image,p,pixels+0,alpha+0);
-      AlphaBlendPixelInfo(image,p+1*GetPixelChannels(image),pixels+1,alpha+1);
+      AlphaBlendPixelInfo(image,p+GetPixelChannels(image),pixels+1,alpha+1);
       AlphaBlendPixelInfo(image,p+2*GetPixelChannels(image),pixels+2,alpha+2);
       AlphaBlendPixelInfo(image,p+3*GetPixelChannels(image),pixels+3,alpha+3);
       AlphaBlendPixelInfo(image,p+4*GetPixelChannels(image),pixels+4,alpha+4);
@@ -4787,7 +4784,7 @@ MagickExport MagickBooleanType InterpolatePixelInfo(const Image *image,
           break;
         }
       AlphaBlendPixelInfo(image,p,pixels+0,alpha+0);
-      AlphaBlendPixelInfo(image,p+1*GetPixelChannels(image),pixels+1,alpha+1);
+      AlphaBlendPixelInfo(image,p+GetPixelChannels(image),pixels+1,alpha+1);
       AlphaBlendPixelInfo(image,p+2*GetPixelChannels(image),pixels+2,alpha+2);
       AlphaBlendPixelInfo(image,p+3*GetPixelChannels(image),pixels+3,alpha+3);
       delta.x=x-x_offset;
@@ -4878,10 +4875,10 @@ MagickExport MagickBooleanType InterpolatePixelInfo(const Image *image,
       delta.y=y-y_offset;
       luminance.x=GetPixelLuminance(image,p)-(double)
         GetPixelLuminance(image,p+3*GetPixelChannels(image));
-      luminance.y=GetPixelLuminance(image,p+1*GetPixelChannels(image))-(double)
+      luminance.y=GetPixelLuminance(image,p+GetPixelChannels(image))-(double)
         GetPixelLuminance(image,p+2*GetPixelChannels(image));
       AlphaBlendPixelInfo(image,p,pixels+0,alpha+0);
-      AlphaBlendPixelInfo(image,p+1*GetPixelChannels(image),pixels+1,alpha+1);
+      AlphaBlendPixelInfo(image,p+GetPixelChannels(image),pixels+1,alpha+1);
       AlphaBlendPixelInfo(image,p+2*GetPixelChannels(image),pixels+2,alpha+2);
       AlphaBlendPixelInfo(image,p+3*GetPixelChannels(image),pixels+3,alpha+3);
       if (fabs(luminance.x) < fabs(luminance.y))
@@ -5015,7 +5012,7 @@ MagickExport MagickBooleanType InterpolatePixelInfo(const Image *image,
           break;
         }
       AlphaBlendPixelInfo(image,p,pixels+0,alpha+0);
-      AlphaBlendPixelInfo(image,p+1*GetPixelChannels(image),pixels+1,alpha+1);
+      AlphaBlendPixelInfo(image,p+GetPixelChannels(image),pixels+1,alpha+1);
       AlphaBlendPixelInfo(image,p+2*GetPixelChannels(image),pixels+2,alpha+2);
       AlphaBlendPixelInfo(image,p+3*GetPixelChannels(image),pixels+3,alpha+3);
       AlphaBlendPixelInfo(image,p+4*GetPixelChannels(image),pixels+4,alpha+4);
index a08c00c730ad4397f5525c2b3056590ba738763f..2da578478b418984aad956f57478ad11cf718ecb 100644 (file)
@@ -11273,7 +11273,7 @@ WandExport MagickBooleanType MagickTintImage(MagickWand *wand,
   Image
     *tint_image;
 
-  PixelPacket
+  PixelInfo
     target;
 
   assert(wand != (MagickWand *) NULL);
@@ -11288,8 +11288,8 @@ WandExport MagickBooleanType MagickTintImage(MagickWand *wand,
     PixelGetGreenQuantum(opacity)),(double) (100.0*QuantumScale*
     PixelGetBlueQuantum(opacity)),(double) (100.0*QuantumScale*
     PixelGetOpacityQuantum(opacity)));
-  PixelGetQuantumPacket(tint,&target);
-  tint_image=TintImage(wand->images,percent_opaque,target,wand->exception);
+  target=PixelGetPixel(tint);
+  tint_image=TintImage(wand->images,percent_opaque,&target,wand->exception);
   if (tint_image == (Image *) NULL)
     return(MagickFalse);
   ReplaceImageInList(&wand->images,tint_image);
index 2aaaa93fd4daf209a58095a44688ed4d47abc77f..6dbdfa48a04f0d5bfd2dfb2b27cd0d98158d5d52 100644 (file)
@@ -384,14 +384,6 @@ static MagickBooleanType MonitorProgress(const char *text,
   return(MagickTrue);
 }
 
-/*
-** SparseColorOption() parses the complex -sparse-color argument into an
-** an array of floating point values then calls SparseColorImage().
-** Argument is a complex mix of floating-point pixel coodinates, and color
-** specifications (or direct floating point numbers).  The number of floats
-** needed to represent a color varies depending on the current channel
-** setting.
-*/
 static Image *SparseColorOption(const Image *image,
   const SparseColorMethod method,const char *arguments,
   const MagickBooleanType color_from_image,ExceptionInfo *exception)
@@ -421,6 +413,14 @@ static Image *SparseColorOption(const Image *image,
     number_arguments,
     number_colors;
 
+  /*
+    SparseColorOption() parses the complex -sparse-color argument into an
+    an array of floating point values then calls SparseColorImage().
+    Argument is a complex mix of floating-point pixel coodinates, and color
+    specifications (or direct floating point numbers).  The number of floats
+    needed to represent a color varies depending on the current channel
+    setting.
+  */
   assert(image != (Image *) NULL);
   assert(image->signature == MagickSignature);
   if (image->debug != MagickFalse)
@@ -642,6 +642,9 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
   MagickStatusType
     flags;
 
+  PixelInterpolateMethod
+    interpolate_method;
+
   QuantizeInfo
     *quantize_info;
 
@@ -669,6 +672,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
   SetGeometryInfo(&geometry_info);
   GetPixelInfo(*image,&fill);
   SetPixelInfoPacket(*image,&(*image)->background_color,&fill);
+  interpolate_method=UndefinedInterpolatePixel;
   channel=mogrify_info->channel;
   format=GetImageOption(mogrify_info,"format");
   SetGeometry(*image,&region_geometry);
@@ -720,7 +724,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
             (void) SyncImageSettings(mogrify_info,*image);
             (void) ParseRegionGeometry(*image,argv[i+1],&geometry,exception);
             mogrify_image=AdaptiveResizeImage(*image,geometry.width,
-              geometry.height,(*image)->interpolate,exception);
+              geometry.height,interpolate_method,exception);
             break;
           }
         if (LocaleCompare("adaptive-sharpen",option+1) == 0)
@@ -1800,6 +1804,12 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
             draw_info->interline_spacing=geometry_info.rho;
             break;
           }
+        if (LocaleCompare("interpolate",option+1) == 0)
+          {
+            interpolate_method=(PixelInterpolateMethod) ParseCommandOption(
+              MagickInterpolateOptions,MagickFalse,argv[i+1]);
+            break;
+          }
         if (LocaleCompare("interword-spacing",option+1) == 0)
           {
             if (*option == '+')
@@ -2091,8 +2101,8 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
             (void) SyncImageSettings(mogrify_info,*image);
             p=argv[i+1];
             GetMagickToken(p,&p,token);
-            method=(MorphologyMethod) ParseCommandOption(MagickMorphologyOptions,
-              MagickFalse,token);
+            method=(MorphologyMethod) ParseCommandOption(
+              MagickMorphologyOptions,MagickFalse,token);
             iterations=1L;
             GetMagickToken(p,&p,token);
             if ((*p == ':') || (*p == ','))
@@ -2239,7 +2249,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
                 angle=geometry_info.rho;
               }
             mogrify_image=PolaroidImage(*image,draw_info,angle,
-              (*image)->interpolate,exception);
+              interpolate_method,exception);
             break;
           }
         if (LocaleCompare("posterize",option+1) == 0)
@@ -2264,8 +2274,8 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
             if (*option == '+')
               preview_type=UndefinedPreview;
             else
-              preview_type=(PreviewType) ParseCommandOption(MagickPreviewOptions,
-                MagickFalse,argv[i+1]);
+              preview_type=(PreviewType) ParseCommandOption(
+                MagickPreviewOptions,MagickFalse,argv[i+1]);
             mogrify_image=PreviewImage(*image,preview_type,exception);
             break;
           }
@@ -2791,7 +2801,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
             (void) SyncImageSettings(mogrify_info,*image);
             (void) ParseGeometry(argv[i+1],&geometry_info);
             mogrify_image=SpreadImage(*image,geometry_info.rho,
-              (*image)->interpolate,exception);
+              interpolate_method,exception);
             break;
           }
         if (LocaleCompare("statistic",option+1) == 0)
@@ -2926,7 +2936,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
               Tint the image.
             */
             (void) SyncImageSettings(mogrify_info,*image);
-            mogrify_image=TintImage(*image,argv[i+1],draw_info->fill,exception);
+            mogrify_image=TintImage(*image,argv[i+1],&fill,exception);
             break;
           }
         if (LocaleCompare("transform",option+1) == 0)
@@ -3100,7 +3110,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
             if ((flags & SigmaValue) == 0)
               geometry_info.sigma=1.0;
             mogrify_image=WaveImage(*image,geometry_info.rho,
-              geometry_info.sigma,(*image)->interpolate,exception);
+              geometry_info.sigma,interpolate_method,exception);
             break;
           }
         if (LocaleCompare("weight",option+1) == 0)
@@ -7224,6 +7234,9 @@ WandExport MagickBooleanType MogrifyImageList(ImageInfo *image_info,
   MagickStatusType
     status;
 
+  PixelInterpolateMethod
+   interpolate_method;
+
   QuantizeInfo
     *quantize_info;
 
@@ -7247,6 +7260,7 @@ WandExport MagickBooleanType MogrifyImageList(ImageInfo *image_info,
       (*images)->filename);
   if ((argc <= 0) || (*argv == (char *) NULL))
     return(MagickTrue);
+  interpolate_method=UndefinedInterpolatePixel;
   mogrify_info=CloneImageInfo(image_info);
   quantize_info=AcquireQuantizeInfo(mogrify_info);
   status=MagickTrue;
@@ -7347,7 +7361,7 @@ WandExport MagickBooleanType MogrifyImageList(ImageInfo *image_info,
                 status=MagickFalse;
                 break;
               }
-            (void) ClutImage(image,clut_image,image->interpolate,exception);
+            (void) ClutImage(image,clut_image,interpolate_method,exception);
             clut_image=DestroyImage(clut_image);
             *images=DestroyImageList(*images);
             *images=image;
@@ -7426,8 +7440,8 @@ WandExport MagickBooleanType MogrifyImageList(ImageInfo *image_info,
                   {
                     /*
                       Set a blending mask for the composition.
+                      Posible error, what if image->mask already set.
                     */
-                    /* POSIBLE ERROR; what if image->mask already set */
                     image->mask=mask_image;
                     (void) NegateImage(image->mask,MagickFalse,exception);
                   }
@@ -7442,29 +7456,6 @@ WandExport MagickBooleanType MogrifyImageList(ImageInfo *image_info,
             *images=image;
             break;
           }
-#if 0
-This has been merged completely into MogrifyImage()
-        if (LocaleCompare("crop",option+1) == 0)
-          {
-            MagickStatusType
-              flags;
-
-            RectangleInfo
-              geometry;
-
-            /*
-              Crop Image.
-            */
-            (void) SyncImagesSettings(mogrify_info,*images);
-            flags=ParseGravityGeometry(*images,argv[i+1],&geometry,exception);
-            if (((geometry.width == 0) && (geometry.height == 0)) ||
-                ((flags & XValue) != 0) || ((flags & YValue) != 0))
-              break;
-            (void) TransformImages(images,argv[i+1],(char *) NULL);
-            InheritException(exception,&(*images)->exception);
-            break;
-          }
-#endif
         break;
       }
       case 'd':
@@ -7547,8 +7538,8 @@ This has been merged completely into MogrifyImage()
               op;
 
             (void) SyncImageSettings(mogrify_info,*images);
-            op=(MagickEvaluateOperator) ParseCommandOption(MagickEvaluateOptions,
-              MagickFalse,argv[i+1]);
+            op=(MagickEvaluateOperator) ParseCommandOption(
+              MagickEvaluateOptions,MagickFalse,argv[i+1]);
             evaluate_image=EvaluateImages(*images,op,exception);
             if (evaluate_image == (Image *) NULL)
               {
@@ -7703,6 +7694,12 @@ This has been merged completely into MogrifyImage()
             *images=GetFirstImageInList(q);
             break;
           }
+        if (LocaleCompare("interpolate",option+1) == 0)
+          {
+            interpolate_method=(PixelInterpolateMethod) ParseCommandOption(
+              MagickInterpolateOptions,MagickFalse,argv[i+1]);
+            break;
+          }
         break;
       }
       case 'l':
index 7e81186fc4ae2cd3abfe400157891e68c01975ce..2f1140dfa277dc8b9a28f7302fca6f92e50d9e36 100644 (file)
@@ -1267,6 +1267,37 @@ WandExport Quantum PixelGetOpacityQuantum(const PixelWand *wand)
 %                                                                             %
 %                                                                             %
 %                                                                             %
+%   P i x e l G e t P i x e l                                                 %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  PixelGetPixel() returns the pixel wand pixel.
+%
+%  The format of the PixelGetPixel method is:
+%
+%      PixelInfo PixelGetPixel(const PixelWand *wand)
+%
+%  A description of each parameter follows:
+%
+%    o wand: the pixel wand.
+%
+*/
+WandExport PixelInfo PixelGetPixel(const PixelWand *wand)
+{
+  assert(wand != (const PixelWand *) NULL);
+  assert(wand->signature == WandSignature);
+  if (wand->debug != MagickFalse)
+    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
+  return(wand->pixel);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
 %   P i x e l G e t Q u a n t u m P a c k e t                                 %
 %                                                                             %
 %                                                                             %
index 74e7a6fc94cae422aab9266aa92fc0fda21a220d..bee5351d0ce155c87fc4ff38eede0af7cb4fe5a8 100644 (file)
@@ -51,6 +51,9 @@ extern WandExport MagickBooleanType
   PixelClearException(PixelWand *),
   PixelSetColor(PixelWand *,const char *);
 
+extern WandExport PixelInfo
+  PixelGetPixel(const PixelWand *);
+
 extern WandExport PixelWand
   *ClonePixelWand(const PixelWand *),
   **ClonePixelWands(const PixelWand **,const size_t),
index a91a303f06b59a0d2c69da2de87c859e4d9ee05a..4577677f30a2e898ce56f839fb5c8159e112f134 100644 (file)
@@ -9681,16 +9681,16 @@ Mogrify(ref,...)
         }
         case 85:  /* Tint */
         {
-          PixelPacket
-            target;
+          PixelInfo
+            tint;
 
-          (void) GetOneVirtualPixel(image,0,0,&target,exception);
+          GetPixelInfo(image,&tint);
           if (attribute_flag[0] != 0)
-            (void) QueryColorDatabase(argument_list[0].string_reference,&target,
+            (void) QueryMagickColor(argument_list[0].string_reference,&tint,
               exception);
           if (attribute_flag[1] == 0)
             argument_list[1].string_reference="100";
-          image=TintImage(image,argument_list[1].string_reference,target,
+          image=TintImage(image,argument_list[1].string_reference,&tint,
             exception);
           break;
         }
index feaa8feb7b3d6868f563ecae9255144f95c8ae52..0ae8fc3b0e6934c84100e68bdb5ed85fcbce4a02 100644 (file)
@@ -434,6 +434,12 @@ $example->Label('Swirl');
 $example->Swirl(90);
 push(@$images,$example);
 
+print "Tint...\n";
+$example=$model->Clone();
+$example->Label('Tint');
+$example->Tint('wheat');
+push(@$images,$example);
+
 print "Unsharp Mask...\n";
 $example=$model->Clone();
 $example->Label('Unsharp Mask');