[Top][All Lists]
[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. */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r108573: Handle availability of MagickMergeImageLayers and MagickExportImagePixels,
Chong Yidong <=