emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r108573: Handle availability of Magic


From: Chong Yidong
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r108573: Handle availability of MagickMergeImageLayers and MagickExportImagePixels
Date: Tue, 12 Jun 2012 18:08:39 +0800
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 108573
fixes bug: http://debbugs.gnu.org/11678
committer: Chong Yidong <address@hidden>
branch nick: trunk
timestamp: Tue 2012-06-12 18:08:39 +0800
message:
  Handle availability of MagickMergeImageLayers and MagickExportImagePixels
  
  * configure.in: Check for MagickMergeImageLayers.
  
  * src/image.c (imagemagick_load_image): Use MagickFlattenImage if
  MagickMergeImageLayers is undefined.  Use pixel pusher loop if
  MagickExportImagePixels is undefined.
modified:
  ChangeLog
  configure.in
  src/ChangeLog
  src/image.c
=== modified file 'ChangeLog'
--- a/ChangeLog 2012-06-11 23:17:11 +0000
+++ b/ChangeLog 2012-06-12 10:08:39 +0000
@@ -1,3 +1,7 @@
+2012-06-12  Chong Yidong  <address@hidden>
+
+       * configure.in: Check for MagickMergeImageLayers (Bug#11678).
+
 2012-06-11  Glenn Morris  <address@hidden>
 
        * configure.in (SYSTEM_TYPE): New AC_DEFINE.

=== modified file 'configure.in'
--- a/configure.in      2012-06-11 23:17:11 +0000
+++ b/configure.in      2012-06-12 10:08:39 +0000
@@ -1855,6 +1855,7 @@
       CFLAGS="$CFLAGS $IMAGEMAGICK_CFLAGS"
       LIBS="$IMAGEMAGICK_LIBS $LIBS"
       AC_CHECK_FUNCS(MagickExportImagePixels)
+      AC_CHECK_FUNCS(MagickMergeImageLayers)
     fi
   fi
 fi

=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2012-06-12 00:30:18 +0000
+++ b/src/ChangeLog     2012-06-12 10:08:39 +0000
@@ -1,3 +1,9 @@
+2012-06-12  Chong Yidong  <address@hidden>
+
+       * image.c (imagemagick_load_image): Use MagickFlattenImage if
+       MagickMergeImageLayers is undefined.  Use pixel pusher loop if
+       MagickExportImagePixels is undefined.
+
 2012-06-12  Paul Eggert  <address@hidden>
 
        * image.c (imagemagick_load_image): Remove unused label.

=== modified file 'src/image.c'
--- a/src/image.c       2012-06-12 00:30:18 +0000
+++ b/src/image.c       2012-06-12 10:08:39 +0000
@@ -7783,7 +7783,11 @@
   {
     MagickWand *new_wand;
     MagickSetImageBackgroundColor (image_wand, bg_wand);
+#ifdef HAVE_MAGICKMERGEIMAGELAYERS
     new_wand = MagickMergeImageLayers (image_wand, MergeLayer);
+#else
+    new_wand = MagickFlattenImages (image_wand);
+#endif
     DestroyMagickWand (image_wand);
     image_wand = new_wand;
   }
@@ -7800,7 +7804,50 @@
 
   init_color_table ();
 
-  if (imagemagick_render_type == 0)
+#ifdef HAVE_MAGICKEXPORTIMAGEPIXELS
+  if (imagemagick_render_type != 0)
+    {
+      /* Magicexportimage is normally faster than pixelpushing.  This
+         method is also well tested.  Some aspects of this method are
+         ad-hoc and needs to be more researched. */
+      int imagedepth = 24; /*MagickGetImageDepth(image_wand);*/
+      const char *exportdepth = imagedepth <= 8 ? "I" : "BGRP"; /*"RGBP";*/
+      /* Try to create a x pixmap to hold the imagemagick pixmap.  */
+      if (!x_create_x_image_and_pixmap (f, width, height, imagedepth,
+                                        &ximg, &img->pixmap))
+       {
+#ifdef COLOR_TABLE_SUPPORT
+         free_color_table ();
+#endif
+         image_error ("Imagemagick X bitmap allocation failure", Qnil, Qnil);
+         goto imagemagick_error;
+       }
+
+      /* Oddly, the below code doesn't seem to work:*/
+      /* switch(ximg->bitmap_unit){ */
+      /* case 8: */
+      /*   pixelwidth=CharPixel; */
+      /*   break; */
+      /* case   16: */
+      /*   pixelwidth=ShortPixel; */
+      /*   break; */
+      /* case   32: */
+      /*   pixelwidth=LongPixel; */
+      /*   break; */
+      /* } */
+      /*
+        Here im just guessing the format of the bitmap.
+        happens to work fine for:
+        - bw djvu images
+        on rgb display.
+        seems about 3 times as fast as pixel pushing(not carefully measured)
+      */
+      pixelwidth = CharPixel; /*??? TODO figure out*/
+      MagickExportImagePixels (image_wand, 0, 0, width, height,
+                              exportdepth, pixelwidth, ximg->data);
+    }
+  else
+#endif /* HAVE_MAGICKEXPORTIMAGEPIXELS */
     {
       size_t image_height;
 
@@ -7850,58 +7897,6 @@
         }
       DestroyPixelIterator (iterator);
     }
-  else                          /* imagemagick_render_type != 0 */
-    {
-      /* Magicexportimage is normally faster than pixelpushing.  This
-         method is also well tested. Some aspects of this method are
-         ad-hoc and needs to be more researched. */
-      int imagedepth = 24;/*MagickGetImageDepth(image_wand);*/
-      const char *exportdepth = imagedepth <= 8 ? "I" : "BGRP";/*"RGBP";*/
-      /* Try to create a x pixmap to hold the imagemagick pixmap.  */
-      if (!x_create_x_image_and_pixmap (f, width, height, imagedepth,
-                                        &ximg, &img->pixmap))
-       {
-#ifdef COLOR_TABLE_SUPPORT
-         free_color_table ();
-#endif
-         image_error ("Imagemagick X bitmap allocation failure", Qnil, Qnil);
-         goto imagemagick_error;
-       }
-
-
-      /* Oddly, the below code doesn't seem to work:*/
-      /* switch(ximg->bitmap_unit){ */
-      /* case 8: */
-      /*   pixelwidth=CharPixel; */
-      /*   break; */
-      /* case   16: */
-      /*   pixelwidth=ShortPixel; */
-      /*   break; */
-      /* case   32: */
-      /*   pixelwidth=LongPixel; */
-      /*   break; */
-      /* } */
-      /*
-        Here im just guessing the format of the bitmap.
-        happens to work fine for:
-        - bw djvu images
-        on rgb display.
-        seems about 3 times as fast as pixel pushing(not carefully measured)
-      */
-      pixelwidth = CharPixel;/*??? TODO figure out*/
-#ifdef HAVE_MAGICKEXPORTIMAGEPIXELS
-      MagickExportImagePixels (image_wand,
-                              0, 0,
-                              width, height,
-                              exportdepth,
-                              pixelwidth,
-                              ximg->data);
-#else
-      image_error ("You don't have MagickExportImagePixels, upgrade 
ImageMagick!",
-                  Qnil, Qnil);
-#endif
-    }
-
 
 #ifdef COLOR_TABLE_SUPPORT
   /* Remember colors allocated for this image.  */


reply via email to

[Prev in Thread] Current Thread [Next in Thread]