]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Thu, 10 Feb 2011 02:57:49 +0000 (02:57 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Thu, 10 Feb 2011 02:57:49 +0000 (02:57 +0000)
PerlMagick/Magick.xs
magick/image.c

index a5b7588c3c650983f844f8628422e6717514209d..911ec0594d483d5688f51cb3028b5bf078ec11aa 100644 (file)
@@ -13382,7 +13382,7 @@ Smush(ref,...)
     /*
       Get options.
     */
-    offset=2;
+    offset=0;
     stack=MagickTrue;
     for (i=2; i < items; i+=2)
     {
index 93afc44b49ee063b7b865a3a36ee31bd41981530..247ab4f87d071f524abb07612403d64822ef9318 100644 (file)
@@ -395,19 +395,19 @@ MagickExport void AcquireNextImage(const ImageInfo *image_info,Image *image)
 %
 %  The format of the AppendImages method is:
 %
-%      Image *AppendImages(const Image *image,const MagickBooleanType stack,
+%      Image *AppendImages(const Image *images,const MagickBooleanType stack,
 %        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image sequence.
+%    o images: the image sequence.
 %
 %    o stack: A value other than 0 stacks the images top-to-bottom.
 %
 %    o exception: return any errors or warnings in this structure.
 %
 */
-MagickExport Image *AppendImages(const Image *image,
+MagickExport Image *AppendImages(const Image *images,
   const MagickBooleanType stack,ExceptionInfo *exception)
 {
 #define AppendImageTag  "Append/Image"
@@ -416,6 +416,9 @@ MagickExport Image *AppendImages(const Image *image,
     *append_view,
     *image_view;
 
+  const Image
+    *image;
+
   Image
     *append_image;
 
@@ -446,12 +449,13 @@ MagickExport Image *AppendImages(const Image *image,
   /*
     Ensure the image have the same column width.
   */
-  assert(image != (Image *) NULL);
-  assert(image->signature == MagickSignature);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
+  assert(images != (Image *) NULL);
+  assert(images->signature == MagickSignature);
+  if (images->debug != MagickFalse)
+    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",images->filename);
   assert(exception != (ExceptionInfo *) NULL);
   assert(exception->signature == MagickSignature);
+  image=images;
   matte=image->matte;
   number_images=1;
   width=image->columns;
@@ -3812,12 +3816,12 @@ MagickExport VirtualPixelMethod SetImageVirtualPixelMethod(const Image *image,
 %
 %  The format of the SmushImages method is:
 %
-%      Image *SmushImages(const Image *image,const MagickBooleanType stack,
+%      Image *SmushImages(const Image *images,const MagickBooleanType stack,
 %        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
-%    o image: the image sequence.
+%    o images: the image sequence.
 %
 %    o stack: A value other than 0 stacks the images top-to-bottom.
 %
@@ -3826,7 +3830,24 @@ MagickExport VirtualPixelMethod SetImageVirtualPixelMethod(const Image *image,
 %    o exception: return any errors or warnings in this structure.
 %
 */
-MagickExport Image *SmushImages(const Image *image,
+
+static ssize_t SmushOffset(const Image *images,const MagickBooleanType stack,
+  ExceptionInfo *exception)
+{
+  if (stack != MagickFalse)
+    {
+      /*
+        Stack left to right.
+      */
+      return(0);
+    }
+  /*
+    Stack top to bottom.
+  */
+  return(0);
+}
+
+MagickExport Image *SmushImages(const Image *images,
   const MagickBooleanType stack,const ssize_t offset,ExceptionInfo *exception)
 {
 #define SmushImageTag  "Smush/Image"
@@ -3834,6 +3855,9 @@ MagickExport Image *SmushImages(const Image *image,
   CacheView
     *smush_view;
 
+  const Image
+    *image;
+
   Image
     *smush_image;
 
@@ -3863,12 +3887,13 @@ MagickExport Image *SmushImages(const Image *image,
   /*
     Ensure the image have the same column width.
   */
-  assert(image != (Image *) NULL);
-  assert(image->signature == MagickSignature);
-  if (image->debug != MagickFalse)
-    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
+  assert(images != (Image *) NULL);
+  assert(images->signature == MagickSignature);
+  if (images->debug != MagickFalse)
+    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",images->filename);
   assert(exception != (ExceptionInfo *) NULL);
   assert(exception->signature == MagickSignature);
+  image=images;
   matte=image->matte;
   number_images=1;
   width=image->columns;
@@ -3913,9 +3938,15 @@ MagickExport Image *SmushImages(const Image *image,
     SetGeometry(smush_image,&geometry);
     GravityAdjustGeometry(image->columns,image->rows,image->gravity,&geometry);
     if (stack != MagickFalse)
-      x_offset-=geometry.x;
+      {
+        x_offset-=geometry.x;
+        x_offset-=SmushOffset(image,stack,exception)+offset;
+      }
     else
-      y_offset-=geometry.y;
+      {
+        y_offset-=geometry.y;
+        y_offset-=SmushOffset(image,stack,exception)+offset;
+      }
     status=CompositeImage(smush_image,OverCompositeOp,image,x_offset,y_offset);
     proceed=SetImageProgress(image,SmushImageTag,n,number_images);
     if (proceed == MagickFalse)