diff --git a/.gitignore b/.gitignore index 80484f0..2390869 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ gimp-2.6.10-1-autoreconf.patch.bz2 /gimp-2.6.11.tar.bz2 /gimp-2.6.11-1-autoreconf.patch.bz2 /gimp-2.6.11-10-autoreconf.patch.bz2 +/gimp-2.6.11-11-autoreconf.patch.bz2 diff --git a/gimp-2.6.11-poppler-0.17.patch b/gimp-2.6.11-poppler-0.17.patch index 56a8d19..8663089 100644 --- a/gimp-2.6.11-poppler-0.17.patch +++ b/gimp-2.6.11-poppler-0.17.patch @@ -1,18 +1,27 @@ -From a915dce96f6d7d75ae09ec5355a404f00fc0460e Mon Sep 17 00:00:00 2001 +From 69f69eed816b89be9a01a48a1f0643d1fd496118 Mon Sep 17 00:00:00 2001 From: Nils Philippsen -Date: Tue, 3 May 2011 15:58:39 +0200 +Date: Fri, 6 May 2011 11:58:44 +0200 Subject: [PATCH] patch: poppler-0.17 Squashed commit of the following: -commit ad0adb0862960739f5dd2d699d2c75aee5e204d9 +commit 529d940222dfc352d41fbf72de29134421aa4002 +Author: Nils Philippsen +Date: Fri May 6 11:50:30 2011 +0200 + + use code based on pixbufs instead of cairo surfaces + + this is done to avoid adding to libgimp, thanks to Mukund Sivaraman for + hints how to do this + +commit f8671d8767d4cdab830dc06310e96c63a88ec0fd Author: Mukund Sivaraman Date: Thu Apr 21 13:57:13 2011 +0530 file-pdf-load: Update attribution, removing bogus copyright (cherry picked from commit e999122e0b20b6ccd6bde3ce039bb64068fc0019) -commit b320fff7564fe254454df78c4af00e7da70fc790 +commit 89a78f2590d298dac2f42e6d9a3016fc5d672c70 Author: Nils Philippsen Date: Thu Apr 21 13:52:18 2011 +0200 @@ -23,7 +32,7 @@ Date: Thu Apr 21 13:52:18 2011 +0200 * uses GTK+ 3 API to convert surfaces to pixbufs where available (backported from commit 7bdadd80ba479d6ff904e276d805e16f6b940ee2) -commit 83428bcdc84a08a8b59e9a88cad2288f6a1edf45 +commit 4e92302c4a14a961f112587a0ad86696c88da2f8 Author: Nils Philippsen Date: Thu Apr 21 13:38:08 2011 +0200 @@ -34,517 +43,12 @@ Date: Thu Apr 21 13:38:08 2011 +0200 Conflicts: plug-ins/common/file-pdf.c - -commit e51f6274e69c88f2ac269da7ae9cf6ff6ac6e1b3 -Author: Nils Philippsen -Date: Tue May 3 15:52:00 2011 +0200 - - libgimp: add gimp_layer_new_from_surface() - - and to enable that, make libgimp depend on Cairo. - - backported from: - - commit 374dd50c43cca559a4888224f8fd6322fb26115d - Author: Michael Natterer - Date: Wed Apr 20 23:58:00 2011 +0200 - - libgimp: add gimp_layer_new_from_surface() - - and to enable that, make libgimp depend on Cairo. --- - configure.in | 2 + - gimp.pc.in | 2 +- - libgimp/Makefile.am | 2 +- - libgimp/gimp.h | 1 + - libgimp/gimplayer.c | 211 ++++++++++++++++++++++ - libgimp/gimplayer.h | 8 + - plug-ins/common/Makefile.am | 40 ++-- - plug-ins/common/file-pdf.c | 368 ++++++++++++++++++++++++++++++++------- - plug-ins/common/mkgen.pl | 2 +- - plug-ins/file-faxg3/Makefile.am | 2 + - plug-ins/help/Makefile.am | 2 + - 11 files changed, 558 insertions(+), 82 deletions(-) + plug-ins/common/file-pdf.c | 323 ++++++++++++++++++++++++++++++++++++++------ + 1 files changed, 283 insertions(+), 40 deletions(-) -diff --git a/configure.in b/configure.in -index 41400f9..4338a13 100644 ---- a/configure.in -+++ b/configure.in -@@ -113,8 +113,10 @@ AC_SUBST(GIMP_FULL_NAME) - # These are used in the .pc files - GLIB_REQUIRED_VERSION=glib_required_version - GTK_REQUIRED_VERSION=gtk_required_version -+CAIRO_REQUIRED_VERSION=cairo_required_version - AC_SUBST(GLIB_REQUIRED_VERSION) - AC_SUBST(GTK_REQUIRED_VERSION) -+AC_SUBST(CAIRO_REQUIRED_VERSION) - - # The symbol GIMP_UNSTABLE is defined above for substitution in - # Makefiles and conditionally defined here as a preprocessor symbol -diff --git a/gimp.pc.in b/gimp.pc.in -index 9d0058a..e61b438 100644 ---- a/gimp.pc.in -+++ b/gimp.pc.in -@@ -12,6 +12,6 @@ gimplocaledir=@gimplocaledir@ - Name: GIMP - Description: GIMP Library - Version: @GIMP_REAL_VERSION@ --Requires: glib-2.0 >= @GLIB_REQUIRED_VERSION@ -+Requires: glib-2.0 >= @GLIB_REQUIRED_VERSION@ cairo >= @CAIRO_REQUIRED_VERSION@ - Libs: -L${libdir} -lgimp-@GIMP_API_VERSION@ -lgimpmath-@GIMP_API_VERSION@ -lgimpconfig-@GIMP_API_VERSION@ -lgimpcolor-@GIMP_API_VERSION@ -lgimpbase-@GIMP_API_VERSION@ @RT_LIBS@ - Cflags: -I${includedir}/gimp-@GIMP_API_VERSION@ -diff --git a/libgimp/Makefile.am b/libgimp/Makefile.am -index f61568d..6912b64 100644 ---- a/libgimp/Makefile.am -+++ b/libgimp/Makefile.am -@@ -363,7 +363,7 @@ libgimpui_2_0_la_LDFLAGS = \ - $(libgimpui_export_symbols) - - libgimpui_2_0_la_LIBADD = $(libgimp) $(libgimpwidgets) $(libgimpcolor) \ -- $(libgimpbase) $(libgimpmodule) $(GTK_LIBS) $(RT_LIBS) -+ $(libgimpbase) $(libgimpmodule) $(CAIRO_LIBS) $(GTK_LIBS) $(RT_LIBS) - - libgimpui_2_0_la_DEPENDENCIES = $(gimpui_def) $(libgimp) $(libgimpwidgets) $(libgimpbase) - -diff --git a/libgimp/gimp.h b/libgimp/gimp.h -index 156530f..096dc2d 100644 ---- a/libgimp/gimp.h -+++ b/libgimp/gimp.h -@@ -22,6 +22,7 @@ - #ifndef __GIMP_H__ - #define __GIMP_H__ - -+#include - #include - - #include -diff --git a/libgimp/gimplayer.c b/libgimp/gimplayer.c -index 719542a..5bee7c6 100644 ---- a/libgimp/gimplayer.c -+++ b/libgimp/gimplayer.c -@@ -84,6 +84,217 @@ gimp_layer_copy (gint32 layer_ID) - } - - /** -+ * GIMP_CAIRO_RGB24_GET_PIXEL: -+ * @s: pointer to the source buffer -+ * @r: red component -+ * @g: green component -+ * @b: blue component -+ * -+ * Gets a single pixel from a Cairo image surface in %CAIRO_FORMAT_RGB24. -+ * -+ * Since: GIMP 2.8 -+ **/ -+#if G_BYTE_ORDER == G_LITTLE_ENDIAN -+#define GIMP_CAIRO_RGB24_GET_PIXEL(s, r, g, b) \ -+ G_STMT_START { (b) = s[0]; (g) = s[1]; (r) = s[2]; } G_STMT_END -+#else -+#define GIMP_CAIRO_RGB24_GET_PIXEL(s, r, g, b) \ -+ G_STMT_START { (r) = s[1]; (g) = s[2]; (b) = s[3]; } G_STMT_END -+#endif -+ -+/** -+ * GIMP_CAIRO_ARGB32_GET_PIXEL: -+ * @s: pointer to the source buffer -+ * @r: red component, not pre-multiplied -+ * @g: green component, not pre-multiplied -+ * @b: blue component, not pre-multiplied -+ * @a: alpha component -+ * -+ * Gets a single pixel from a Cairo image surface in %CAIRO_FORMAT_ARGB32. -+ * -+ * Since: GIMP 2.8 -+ **/ -+#if G_BYTE_ORDER == G_LITTLE_ENDIAN -+#define GIMP_CAIRO_ARGB32_GET_PIXEL(s, r, g, b, a) \ -+ G_STMT_START { \ -+ const guint tb = (s)[0]; \ -+ const guint tg = (s)[1]; \ -+ const guint tr = (s)[2]; \ -+ const guint ta = (s)[3]; \ -+ (r) = (tr << 8) / (ta + 1); \ -+ (g) = (tg << 8) / (ta + 1); \ -+ (b) = (tb << 8) / (ta + 1); \ -+ (a) = ta; \ -+ } G_STMT_END -+#else -+#define GIMP_CAIRO_ARGB32_GET_PIXEL(s, r, g, b, a) \ -+ G_STMT_START { \ -+ const guint ta = (s)[0]; \ -+ const guint tr = (s)[1]; \ -+ const guint tg = (s)[2]; \ -+ const guint tb = (s)[3]; \ -+ (r) = (tr << 8) / (ta + 1); \ -+ (g) = (tg << 8) / (ta + 1); \ -+ (b) = (tb << 8) / (ta + 1); \ -+ (a) = ta; \ -+ } G_STMT_END -+#endif -+ -+/** -+ * gimp_layer_new_from_surface: -+ * @image_ID: The RGB image to which to add the layer. -+ * @name: The layer name. -+ * @cairo_surface_t: A Cairo image surface. -+ * @opacity: The layer opacity. -+ * @mode: The layer combination mode. -+ * @progress_start: start of progress -+ * @progress_end: end of progress -+ * -+ * Create a new layer from a #cairo_surface_t. -+ * -+ * This procedure creates a new layer from the given -+ * #cairo_surface_t. The image has to be an RGB image and just like -+ * with gimp_layer_new() you will still need to add the layer to it. -+ * -+ * If you pass @progress_end > @progress_start to this function, -+ * gimp_progress_update() will be called for. You have to call -+ * gimp_progress_init() beforehand then. -+ * -+ * Returns: The newly created layer. -+ * -+ * Since: GIMP 2.8 -+ */ -+gint32 -+gimp_layer_new_from_surface (gint32 image_ID, -+ const gchar *name, -+ cairo_surface_t *surface, -+ gdouble opacity, -+ GimpLayerModeEffects mode, -+ gdouble progress_start, -+ gdouble progress_end) -+{ -+ GimpDrawable *drawable; -+ GimpPixelRgn rgn; -+ const guchar *pixels; -+ gpointer pr; -+ gint32 layer; -+ cairo_format_t format; -+ gint width; -+ gint height; -+ gint rowstride; -+ gdouble range = progress_end - progress_start; -+ guint count = 0; -+ guint done = 0; -+ -+ g_return_val_if_fail (surface != NULL, -1); -+ g_return_val_if_fail (cairo_surface_get_type (surface) == -+ CAIRO_SURFACE_TYPE_IMAGE, -1); -+ -+ if (gimp_image_base_type (image_ID) != GIMP_RGB) -+ { -+ g_warning ("gimp_layer_new_from_surface() needs an RGB image"); -+ return -1; -+ } -+ -+ width = cairo_image_surface_get_width (surface); -+ height = cairo_image_surface_get_height (surface); -+ format = cairo_image_surface_get_format (surface); -+ -+ if (format != CAIRO_FORMAT_ARGB32 && -+ format != CAIRO_FORMAT_RGB24) -+ { -+ g_warning ("gimp_layer_new_from_surface() assumes that surface is RGB"); -+ return -1; -+ } -+ -+ layer = gimp_layer_new (image_ID, name, width, height, -+ format == CAIRO_FORMAT_RGB24 ? -+ GIMP_RGB_IMAGE : GIMP_RGBA_IMAGE, -+ opacity, mode); -+ -+ if (layer == -1) -+ return -1; -+ -+ drawable = gimp_drawable_get (layer); -+ -+ gimp_pixel_rgn_init (&rgn, drawable, 0, 0, width, height, TRUE, FALSE); -+ -+ rowstride = cairo_image_surface_get_stride (surface); -+ pixels = cairo_image_surface_get_data (surface); -+ -+ for (pr = gimp_pixel_rgns_register (1, &rgn); -+ pr != NULL; -+ pr = gimp_pixel_rgns_process (pr)) -+ { -+ const guchar *src = pixels + rgn.y * rowstride + rgn.x * 4; -+ guchar *dest = rgn.data; -+ gint y; -+ -+ switch (format) -+ { -+ case CAIRO_FORMAT_RGB24: -+ for (y = 0; y < rgn.h; y++) -+ { -+ const guchar *s = src; -+ guchar *d = dest; -+ gint w = rgn.w; -+ -+ while (w--) -+ { -+ GIMP_CAIRO_RGB24_GET_PIXEL (s, d[0], d[1], d[2]); -+ -+ s += 4; -+ d += 3; -+ } -+ -+ src += rowstride; -+ dest += rgn.rowstride; -+ } -+ break; -+ -+ case CAIRO_FORMAT_ARGB32: -+ for (y = 0; y < rgn.h; y++) -+ { -+ const guchar *s = src; -+ guchar *d = dest; -+ gint w = rgn.w; -+ -+ while (w--) -+ { -+ GIMP_CAIRO_ARGB32_GET_PIXEL (s, d[0], d[1], d[2], d[3]); -+ -+ s += 4; -+ d += 4; -+ } -+ -+ src += rowstride; -+ dest += rgn.rowstride; -+ } -+ break; -+ -+ default: -+ break; -+ } -+ -+ if (range > 0.0) -+ { -+ done += rgn.h * rgn.w; -+ -+ if (count++ % 32 == 0) -+ gimp_progress_update (progress_start + -+ (gdouble) done / (width * height) * range); -+ } -+ } -+ -+ if (range > 0.0) -+ gimp_progress_update (progress_end); -+ -+ gimp_drawable_detach (drawable); -+ -+ return layer; -+} -+ -+/** - * gimp_layer_get_preserve_trans: - * @layer_ID: The layer. - * -diff --git a/libgimp/gimplayer.h b/libgimp/gimplayer.h -index cbef025..32d9525 100644 ---- a/libgimp/gimplayer.h -+++ b/libgimp/gimplayer.h -@@ -35,6 +35,14 @@ gint32 gimp_layer_new (gint32 image_ID, - gdouble opacity, - GimpLayerModeEffects mode); - gint32 gimp_layer_copy (gint32 layer_ID); -+gint32 gimp_layer_new_from_surface (gint32 image_ID, -+ const gchar *name, -+ cairo_surface_t *surface, -+ gdouble opacity, -+ GimpLayerModeEffects mode, -+ gdouble progress_start, -+ gdouble progress_end); -+ - - #ifndef GIMP_DISABLE_DEPRECATED - gboolean gimp_layer_get_preserve_trans (gint32 layer_ID); -diff --git a/plug-ins/common/Makefile.am b/plug-ins/common/Makefile.am -index d58ecee..612a3e0 100644 ---- a/plug-ins/common/Makefile.am -+++ b/plug-ins/common/Makefile.am -@@ -250,7 +250,7 @@ animation_optimize_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -279,7 +279,7 @@ antialias_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -324,7 +324,7 @@ blur_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -595,7 +595,7 @@ contrast_normalize_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -624,7 +624,7 @@ contrast_stretch_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -637,7 +637,7 @@ contrast_stretch_hsv_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -666,7 +666,7 @@ crop_auto_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -679,7 +679,7 @@ crop_zealous_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -868,7 +868,7 @@ edge_laplace_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -978,7 +978,7 @@ file_compressor_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -1007,7 +1007,7 @@ file_desktop_link_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -1052,7 +1052,7 @@ file_gif_load_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -1097,7 +1097,7 @@ file_glob_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -1543,7 +1543,7 @@ gradient_map_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -1572,7 +1572,7 @@ guillotine_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -2052,7 +2052,7 @@ rotate_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -2100,7 +2100,7 @@ semi_flatten_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -2289,7 +2289,7 @@ tile_seamless_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -2350,7 +2350,7 @@ value_invert_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - -@@ -2443,7 +2443,7 @@ web_browser_LDADD = \ - $(libgimpconfig) \ - $(libgimpcolor) \ - $(libgimpbase) \ -- $(GLIB_LIBS) \ -+ $(GLIB_LIBS) $(CAIRO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) - diff --git a/plug-ins/common/file-pdf.c b/plug-ins/common/file-pdf.c -index a43b459..ae87a8b 100644 +index a43b459..43c2b7d 100644 --- a/plug-ins/common/file-pdf.c +++ b/plug-ins/common/file-pdf.c @@ -4,6 +4,9 @@ @@ -570,18 +74,17 @@ index a43b459..ae87a8b 100644 gint page, gint preferred_size); --static gint32 layer_from_pixbuf (gint32 image, + static gint32 layer_from_pixbuf (gint32 image, - const gchar *layer_name, - gint position, - GdkPixbuf *buf, - gdouble progress_start, - gdouble progress_scale); -+static gint32 layer_from_surface (gint32 image, -+ const gchar *layer_name, -+ gint position, -+ cairo_surface_t *surface, -+ gdouble progress_start, -+ gdouble progress_scale); ++ const gchar *layer_name, ++ gint position, ++ GdkPixbuf *pixbuf, ++ gdouble progress_start, ++ gdouble progress_scale); /** ** the following was formerly part of @@ -594,46 +97,28 @@ index a43b459..ae87a8b 100644 - gdouble scale; - gint32 image = -1; - GdkPixbuf *pixbuf = NULL; -+ gdouble width = 0; -+ gdouble height = 0; -+ gdouble scale; -+ gint32 image = -1; -+ gint num_pages = 0; -+ cairo_surface_t *surface = NULL; ++ gdouble width = 0; ++ gdouble height = 0; ++ gdouble scale; ++ gint32 image = -1; ++ gint num_pages = 0; ++ GdkPixbuf *pixbuf = NULL; /* Possibly retrieve last settings */ gimp_get_data (LOAD_PROC, &loadvals); -@@ -455,20 +463,23 @@ run (const gchar *name, +@@ -455,7 +463,10 @@ run (const gchar *name, g_object_unref (page); } - pixbuf = get_thumbnail (doc, 0, param[1].data.d_int32); + num_pages = poppler_document_get_n_pages (doc); + -+ surface = get_thumb_surface (doc, 0, param[1].data.d_int32); ++ pixbuf = get_thumb_pixbuf (doc, 0, param[1].data.d_int32); + g_object_unref (doc); } -- if (pixbuf) -+ if (surface) - { -- image = gimp_image_new (gdk_pixbuf_get_width (pixbuf), -- gdk_pixbuf_get_height (pixbuf), -+ image = gimp_image_new (cairo_image_surface_get_width (surface), -+ cairo_image_surface_get_height (surface), - GIMP_RGB); - - gimp_image_undo_disable (image); - -- layer_from_pixbuf (image, "thumbnail", 0, pixbuf, 0.0, 1.0); -- g_object_unref (pixbuf); -+ layer_from_surface (image, "thumbnail", 0, surface, 0.0, 1.0); -+ cairo_surface_destroy (surface); - - gimp_image_undo_enable (image); - gimp_image_clean_all (image); -@@ -548,24 +559,260 @@ open_document (const gchar *filename, +@@ -548,6 +559,187 @@ open_document (const gchar *filename, return doc; } @@ -819,30 +304,9 @@ index a43b459..ae87a8b 100644 +#endif + static gint32 --layer_from_pixbuf (gint32 image, -- const gchar *layer_name, -- gint position, -- GdkPixbuf *pixbuf, -- gdouble progress_start, -- gdouble progress_scale) -+layer_from_surface (gint32 image, -+ const gchar *layer_name, -+ gint position, -+ cairo_surface_t *surface, -+ gdouble progress_start, -+ gdouble progress_scale) - { -- gint32 layer = gimp_layer_new_from_pixbuf (image, layer_name, pixbuf, -- 100.0, GIMP_NORMAL_MODE, -- progress_start, -- progress_start + progress_scale); -+ gint32 layer = gimp_layer_new_from_surface (image, layer_name, surface, -+ 100.0, GIMP_NORMAL_MODE, -+ progress_start, -+ progress_start + progress_scale); - - gimp_image_add_layer (image, layer, position); - + layer_from_pixbuf (gint32 image, + const gchar *layer_name, +@@ -566,6 +758,54 @@ layer_from_pixbuf (gint32 image, return layer; } @@ -876,11 +340,6 @@ index a43b459..ae87a8b 100644 + return surface; +} + -+#if 0 -+ -+/* This is currently unused, but we'll have it here in case the military -+ wants it. */ -+ +static GdkPixbuf * +render_page_to_pixbuf (PopplerPage *page, + int width, @@ -898,46 +357,39 @@ index a43b459..ae87a8b 100644 + + return pixbuf; +} -+ -+#endif + static gint32 load_image (PopplerDocument *doc, const gchar *filename, -@@ -597,9 +844,9 @@ load_image (PopplerDocument *doc, +@@ -597,7 +837,7 @@ load_image (PopplerDocument *doc, gdouble page_width; gdouble page_height; - GdkPixbuf *buf; -- gint width; -- gint height; -+ cairo_surface_t *surface; -+ gint width; -+ gint height; ++ GdkPixbuf *pixbuf; + gint width; + gint height; - page = poppler_document_get_page (doc, pages->pages[i]); - -@@ -627,15 +874,13 @@ load_image (PopplerDocument *doc, +@@ -627,15 +867,13 @@ load_image (PopplerDocument *doc, gimp_image_set_resolution (image_ID, resolution, resolution); } - buf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, width, height); -+ surface = render_page_to_surface (page, width, height, scale); - -- poppler_page_render_to_pixbuf (page, 0, 0, width, height, scale, 0, buf); - +- poppler_page_render_to_pixbuf (page, 0, 0, width, height, scale, 0, buf); ++ pixbuf = render_page_to_pixbuf (page, width, height, scale); + - layer_from_pixbuf (image_ID, page_label, i, buf, -- doc_progress, 1.0 / pages->n_pages); -+ layer_from_surface (image_ID, page_label, i, surface, -+ doc_progress, 1.0 / pages->n_pages); ++ layer_from_pixbuf (image_ID, page_label, i, pixbuf, + doc_progress, 1.0 / pages->n_pages); g_free (page_label); - g_object_unref (buf); -+ cairo_surface_destroy (surface); ++ g_object_unref(pixbuf); doc_progress = (double) (i + 1) / pages->n_pages; gimp_progress_update (doc_progress); -@@ -676,30 +921,22 @@ load_image (PopplerDocument *doc, +@@ -676,30 +914,22 @@ load_image (PopplerDocument *doc, return image_ID; } @@ -975,7 +427,7 @@ index a43b459..ae87a8b 100644 { gdouble width; gdouble height; -@@ -712,15 +949,28 @@ get_thumbnail (PopplerDocument *doc, +@@ -712,15 +942,28 @@ get_thumbnail (PopplerDocument *doc, width *= scale; height *= scale; @@ -1009,7 +461,7 @@ index a43b459..ae87a8b 100644 return pixbuf; } -@@ -769,8 +1019,8 @@ thumbnail_thread (gpointer data) +@@ -769,8 +1012,8 @@ thumbnail_thread (gpointer data) idle_data->page_no = i; /* FIXME get preferred size from somewhere? */ @@ -1020,59 +472,6 @@ index a43b459..ae87a8b 100644 g_idle_add (idle_set_thumbnail, idle_data); -diff --git a/plug-ins/common/mkgen.pl b/plug-ins/common/mkgen.pl -index b0cd786..25ea7a7 100755 ---- a/plug-ins/common/mkgen.pl -+++ b/plug-ins/common/mkgen.pl -@@ -131,7 +131,7 @@ foreach (sort keys %plugins) { - if (exists $plugins{$_}->{ui}) { - $glib = "\$(GTK_LIBS)" - } else { -- $glib = "\$(GLIB_LIBS)" -+ $glib = "\$(GLIB_LIBS) \$(CAIRO_LIBS)" - } - - my $optlib = ""; -diff --git a/plug-ins/file-faxg3/Makefile.am b/plug-ins/file-faxg3/Makefile.am -index ac61d86..694127f 100644 ---- a/plug-ins/file-faxg3/Makefile.am -+++ b/plug-ins/file-faxg3/Makefile.am -@@ -25,6 +25,7 @@ file_faxg3_SOURCES = \ - - INCLUDES = \ - -I$(top_srcdir) \ -+ $(CAIRO_CFLAGS) \ - $(GLIB_CFLAGS) \ - -I$(includedir) - -@@ -34,6 +35,7 @@ LDADD = \ - $(libgimpcolor) \ - $(libgimpbase) \ - $(libgimpmath) \ -+ $(CAIRO_LIBS) \ - $(GLIB_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) -diff --git a/plug-ins/help/Makefile.am b/plug-ins/help/Makefile.am -index c5f49ae..b72d368 100644 ---- a/plug-ins/help/Makefile.am -+++ b/plug-ins/help/Makefile.am -@@ -39,6 +39,7 @@ help_SOURCES = help.c - - INCLUDES = \ - -I$(top_srcdir) \ -+ $(CAIRO_CFLAGS) \ - $(GIO_CFLAGS) \ - -I$(includedir) - -@@ -49,6 +50,7 @@ LDADD = \ - $(libgimpcolor) \ - $(libgimpbase) \ - $(libgimpmath) \ -+ $(CAIRO_LIBS) \ - $(GIO_LIBS) \ - $(RT_LIBS) \ - $(INTLLIBS) -- 1.7.5 diff --git a/gimp.spec b/gimp.spec index 76c2163..f7ef0db 100644 --- a/gimp.spec +++ b/gimp.spec @@ -38,7 +38,7 @@ Summary: GNU Image Manipulation Program Name: gimp Epoch: 2 Version: 2.6.11 -Release: 10%{?dist} +Release: 11%{?dist} %define binver 2.6 %define gimp_lang_ver 20 %define interfacever 2.0 @@ -148,7 +148,7 @@ Patch6: gimp-2.6.11-pyslice.patch # backport: work with poppler-0.17 Patch7: gimp-2.6.11-poppler-0.17.patch # files changed by autoreconf after applying the above -Patch10: gimp-2.6.11-10-autoreconf.patch.bz2 +Patch10: gimp-2.6.11-11-autoreconf.patch.bz2 %description GIMP (GNU Image Manipulation Program) is a powerful image composition and @@ -505,6 +505,9 @@ fi %{_libdir}/gimp/%{interfacever}/plug-ins/help-browser %changelog +* Fri May 06 2011 Nils Philippsen - 2:2.6.11-11 +- simplify poppler-0.17 patch to avoid adding to libgimp (#698157) + * Wed May 04 2011 Nils Philippsen - 2:2.6.11-10 - don't use poppler/gdk_pixbuf API removed in poppler >= 0.17 (#698157) - remove obsolete configure options diff --git a/sources b/sources index 5addb8c..0fc8b66 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ bb2939fe13e54fc7255cef5d097bb5dd gimp-2.6.11.tar.bz2 -29d5e70301d7b626c79fa74248ac6e5e gimp-2.6.11-10-autoreconf.patch.bz2 +6693f03eddebb898720dccd758fbf30c gimp-2.6.11-11-autoreconf.patch.bz2