sm-commit AT lists.ibiblio.org
Subject: Source Mage code commit list
List archive
[SM-Commit] GIT changes to master grimoire by Arwed von Merkatz (c539c0d26093d03f97b0ee5139beb092923ab518)
- From: Arwed von Merkatz <scm AT sourcemage.org>
- To: sm-commit AT lists.ibiblio.org
- Subject: [SM-Commit] GIT changes to master grimoire by Arwed von Merkatz (c539c0d26093d03f97b0ee5139beb092923ab518)
- Date: Thu, 27 Mar 2008 16:12:45 -0500
GIT changes to master grimoire by Arwed von Merkatz <v.merkatz AT gmx.net>:
doc/evince/DEPENDS | 2
doc/evince/HISTORY | 5
doc/evince/PRE_BUILD | 6
doc/evince/evince-poppler-0.8.patch | 323
++++++++++++++++++++++++++++++++++++
4 files changed, 332 insertions(+), 4 deletions(-)
New commits:
commit c539c0d26093d03f97b0ee5139beb092923ab518
Author: Arwed von Merkatz <v.merkatz AT gmx.net>
Commit: Arwed von Merkatz <v.merkatz AT gmx.net>
evince: patch to work with current poppler
diff --git a/doc/evince/DEPENDS b/doc/evince/DEPENDS
index 532ed1f..7ef46d2 100755
--- a/doc/evince/DEPENDS
+++ b/doc/evince/DEPENDS
@@ -1,3 +1,5 @@
+depends autoconf &&
+depends automake &&
depends gettext &&
depends gnome-doc-utils &&
depends gnome-vfs2 &&
diff --git a/doc/evince/HISTORY b/doc/evince/HISTORY
index b70c2bf..583fb6a 100644
--- a/doc/evince/HISTORY
+++ b/doc/evince/HISTORY
@@ -1,3 +1,8 @@
+2008-03-27 Arwed v. Merkatz <v.merkatz AT gmx.net>
+ * DEPENDS, PRE_BUILD, evince-poppler-0.8.patch: patch from evince
+ svn to compile with newer poppler versions, added autoconf and
+ automake as dependencies because of autoreconf in PRE_BUILD
+
2008-03-14 Robin Cook <rcook AT wyrms.net>
* DETAILS: updated VERSION to 2.22.0
diff --git a/doc/evince/PRE_BUILD b/doc/evince/PRE_BUILD
index 642225b..afdfadb 100755
--- a/doc/evince/PRE_BUILD
+++ b/doc/evince/PRE_BUILD
@@ -1,7 +1,5 @@
default_pre_build &&
cd $SOURCE_DIRECTORY &&
-# Upstream wants a specific version, we don't have versioned spells.
-# This compiled fine on my x86 P4 prescott with poppler 0.5.91 --ryuji
-sedit 's|POPPLER_MAX_REQUIRED=0.5.9|POPPLER_MAX_REQUIRED=0.5.91|' configure
&&
-sedit 's|POPPLER_MAX_REQUIRED=0.5.9|POPPLER_MAX_REQUIRED=0.5.91|'
configure.ac
+patch -p0 < $SPELL_DIRECTORY/evince-poppler-0.8.patch &&
+autoreconf
diff --git a/doc/evince/evince-poppler-0.8.patch
b/doc/evince/evince-poppler-0.8.patch
new file mode 100644
index 0000000..348989a
--- /dev/null
+++ b/doc/evince/evince-poppler-0.8.patch
@@ -0,0 +1,323 @@
+Index: backend/pdf/ev-poppler.cc
+===================================================================
+--- backend/pdf/ev-poppler.cc (revision 2964)
++++ backend/pdf/ev-poppler.cc (revision 2967)
+@@ -53,6 +53,14 @@
+ #define HAVE_CAIRO_PRINT
+ #endif
+
++#if POPPLER_MAJOR_VERSION <= 6 || (POPPLER_MAJOR_VERSION == 7 &&
POPPLER_MINOR_VERSION < 2)
++#define POPPLER_HAS_GDK
++#else
++#ifdef POPPLER_WITH_GDK
++#define POPPLER_HAS_GDK
++#endif
++#endif
++
+ typedef struct {
+ PdfDocument *document;
+ char *text;
+@@ -445,28 +453,13 @@
+ }
+
+ static cairo_surface_t *
+-pdf_document_render (EvDocument *document,
+- EvRenderContext *rc)
++pdf_page_render (PopplerPage *page,
++ gint width,
++ gint height,
++ EvRenderContext *rc)
+ {
+- PdfDocument *pdf_document;
+ cairo_surface_t *surface;
+- double width_points, height_points;
+- gint width, height;
+
+- pdf_document = PDF_DOCUMENT (document);
+-
+- set_rc_data (pdf_document, rc);
+-
+- poppler_page_get_size (POPPLER_PAGE (rc->data), &width_points,
&height_points);
+-
+- if (rc->rotation == 90 || rc->rotation == 270) {
+- width = (int) ((height_points * rc->scale) + 0.5);
+- height = (int) ((width_points * rc->scale) + 0.5);
+- } else {
+- width = (int) ((width_points * rc->scale) + 0.5);
+- height = (int) ((height_points * rc->scale) + 0.5);
+- }
+-
+ #ifdef HAVE_POPPLER_PAGE_RENDER
+ cairo_t *cr;
+
+@@ -492,7 +485,7 @@
+ }
+ cairo_scale (cr, rc->scale, rc->scale);
+ cairo_rotate (cr, rc->rotation * G_PI / 180.0);
+- poppler_page_render (POPPLER_PAGE (rc->data), cr);
++ poppler_page_render (page, cr);
+ cairo_destroy (cr);
+ #else /* HAVE_POPPLER_PAGE_RENDER */
+ GdkPixbuf *pixbuf;
+@@ -501,7 +494,7 @@
+ FALSE, 8,
+ width, height);
+
+- poppler_page_render_to_pixbuf (POPPLER_PAGE (rc->data),
++ poppler_page_render_to_pixbuf (page,
+ 0, 0,
+ width, height,
+ rc->scale,
+@@ -511,9 +504,36 @@
+ g_object_unref (pixbuf);
+ #endif /* HAVE_POPPLER_PAGE_RENDER */
+
+- return surface;
++ return surface;
+ }
+
++static cairo_surface_t *
++pdf_document_render (EvDocument *document,
++ EvRenderContext *rc)
++{
++ PdfDocument *pdf_document;
++ double width_points, height_points;
++ gint width, height;
++
++ pdf_document = PDF_DOCUMENT (document);
++
++ set_rc_data (pdf_document, rc);
++
++ poppler_page_get_size (POPPLER_PAGE (rc->data),
++ &width_points, &height_points);
++
++ if (rc->rotation == 90 || rc->rotation == 270) {
++ width = (int) ((height_points * rc->scale) + 0.5);
++ height = (int) ((width_points * rc->scale) + 0.5);
++ } else {
++ width = (int) ((width_points * rc->scale) + 0.5);
++ height = (int) ((height_points * rc->scale) + 0.5);
++ }
++
++ return pdf_page_render (POPPLER_PAGE (rc->data),
++ width, height, rc);
++}
++
+ /* EvDocumentSecurity */
+
+ static gboolean
+@@ -1178,7 +1198,7 @@
+ ev_image_mapping = g_new (EvImageMapping, 1);
+ #ifdef HAVE_POPPLER_PAGE_GET_IMAGE
+ ev_image_mapping->image = ev_image_new (page,
image_mapping->image_id);
+-#else
++#elif POPPLER_HAS_CAIRO
+ ev_image_mapping->image = ev_image_new_from_pixbuf
(image_mapping->image);
+ #endif
+ ev_image_mapping->x1 = image_mapping->area.x1;
+@@ -1240,7 +1260,7 @@
+
+ pdf_document_thumbnails_get_dimensions (EV_DOCUMENT_THUMBNAILS
(pdf_document),
+ rc, &width, &height);
+-
++#ifdef POPPLER_HAS_GDK
+ pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8,
+ width, height);
+ gdk_pixbuf_fill (pixbuf, 0xffffffff);
+@@ -1250,7 +1270,17 @@
+ width, height,
+ rc->scale, rc->rotation, pixbuf);
+ ev_document_fc_mutex_unlock ();
++#else
++ cairo_surface_t *surface;
+
++ ev_document_fc_mutex_lock ();
++ surface = pdf_page_render (poppler_page, width, height, rc);
++ ev_document_fc_mutex_unlock ();
++
++ pixbuf = ev_document_misc_pixbuf_from_surface (surface);
++ cairo_surface_destroy (surface);
++#endif /* POPPLER_HAS_GDK */
++
+ return pixbuf;
+ }
+
+@@ -1261,7 +1291,7 @@
+ {
+ PdfDocument *pdf_document;
+ PopplerPage *poppler_page;
+- GdkPixbuf *pixbuf;
++ GdkPixbuf *pixbuf = NULL;
+ GdkPixbuf *border_pixbuf;
+
+ pdf_document = PDF_DOCUMENT (document_thumbnails);
+@@ -1269,7 +1299,22 @@
+ poppler_page = poppler_document_get_page (pdf_document->document,
rc->page);
+ g_return_val_if_fail (poppler_page != NULL, NULL);
+
++#if POPPLER_MAJOR_VERSION <= 6 || (POPPLER_MAJOR_VERSION == 7 &&
POPPLER_MINOR_VERSION < 2)
+ pixbuf = poppler_page_get_thumbnail (poppler_page);
++#else
++#ifdef POPPLER_HAS_GDK
++ pixbuf = poppler_page_get_thumbnail_pixbuf (poppler_page);
++#else
++ cairo_surface_t *surface;
++
++ surface = poppler_page_get_thumbnail (poppler_page);
++ if (surface) {
++ pixbuf = ev_document_misc_pixbuf_from_surface (surface);
++ cairo_surface_destroy (surface);
++ }
++#endif
++#endif
++
+ if (pixbuf) {
+ /* Rotate provided thumbnail if needed */
+ GdkPixbuf *rotated_pixbuf;
+@@ -1855,7 +1900,24 @@
+
+ #ifdef HAVE_POPPLER_PAGE_RENDER
+ cairo_t *cr;
++
++#if POPPLER_MAJOR_VERSION <= 6 || (POPPLER_MAJOR_VERSION == 7 &&
POPPLER_MINOR_VERSION < 2)
++ GdkColor text_color, base_color;
+
++ text_color = *text;
++ base_color = *base;
++#else
++ PopplerColor text_color, base_color;
++
++ text_color.red = text->red;
++ text_color.green = text->green;
++ text_color.blue = text->blue;
++
++ base_color.red = base->red;
++ base_color.green = base->green;
++ base_color.blue = base->blue;
++#endif
++
+ if (*surface == NULL) {
+ *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
+ width, height);
+@@ -1873,8 +1935,8 @@
+ (PopplerRectangle *)points,
+ (PopplerRectangle *)old_points,
+ (PopplerSelectionStyle)style,
+- text,
+- base);
++ &text_color,
++ &base_color);
+ cairo_destroy (cr);
+ #else /* HAVE_POPPLER_PAGE_RENDER */
+ GdkPixbuf *pixbuf;
+@@ -1928,22 +1990,60 @@
+ }
+
+ static GdkRegion *
++create_gdk_region_from_poppler_region (GList *region)
++{
++ GList *l;
++ GdkRegion *retval;
++
++ retval = gdk_region_new ();
++
++ for (l = region; l; l = g_list_next (l)) {
++ PopplerRectangle *rectangle;
++ GdkRectangle rect;
++
++ rectangle = (PopplerRectangle *)l->data;
++
++ rect.x = (gint) rectangle->x1;
++ rect.y = (gint) rectangle->y1;
++ rect.width = (gint) (rectangle->x2 - rectangle->x1);
++ rect.height = (gint) (rectangle->y2 - rectangle->y1);
++ gdk_region_union_with_rect (retval, &rect);
++
++ poppler_rectangle_free (rectangle);
++ }
++
++ return retval;
++}
++
++static GdkRegion *
+ pdf_selection_get_selection_region (EvSelection *selection,
+ EvRenderContext *rc,
+ EvSelectionStyle style,
+ EvRectangle *points)
+ {
+ PdfDocument *pdf_document;
+- GdkRegion *retval;
++ GdkRegion *retval;
+
+ pdf_document = PDF_DOCUMENT (selection);
+
+ set_rc_data (pdf_document, rc);
+-
+- retval = poppler_page_get_selection_region ((PopplerPage *)rc->data,
++
++#if POPPLER_MAJOR_VERSION <= 6 || (POPPLER_MAJOR_VERSION == 7 &&
POPPLER_MINOR_VERSION < 2)
++ retval = poppler_page_get_selection_region (POPPLER_PAGE (rc->data),
+ rc->scale,
+
(PopplerSelectionStyle)style,
+ (PopplerRectangle *)
points);
++#else
++ GList *region;
++
++ region = poppler_page_get_selection_region (POPPLER_PAGE (rc->data),
++ rc->scale,
++
(PopplerSelectionStyle)style,
++ (PopplerRectangle *)
points);
++ retval = create_gdk_region_from_poppler_region (region);
++ g_list_free (region);
++#endif
++
+ return retval;
+ }
+
+@@ -1954,6 +2054,7 @@
+ PdfDocument *pdf_document;
+ PopplerPage *poppler_page;
+ PopplerRectangle points;
++ GList *region;
+ GdkRegion *retval;
+
+ pdf_document = PDF_DOCUMENT (selection);
+@@ -1963,9 +2064,18 @@
+ points.x1 = 0.0;
+ points.y1 = 0.0;
+ poppler_page_get_size (poppler_page, &(points.x2), &(points.y2));
++
++#if POPPLER_MAJOR_VERSION <= 6 || (POPPLER_MAJOR_VERSION == 7 &&
POPPLER_MINOR_VERSION < 2)
+ retval = poppler_page_get_selection_region (poppler_page, 1.0,
+ POPPLER_SELECTION_GLYPH,
+ &points);
++#else
++ region = poppler_page_get_selection_region (poppler_page, 1.0,
++ POPPLER_SELECTION_GLYPH,
++ &points);
++ retval = create_gdk_region_from_poppler_region (region);
++ g_list_free (region);
++#endif
+ g_object_unref (poppler_page);
+
+ return retval;
+Index: configure.ac
+===================================================================
+--- configure.ac (revision 2964)
++++ configure.ac (revision 2967)
+@@ -218,6 +218,15 @@
+ AC_CHECK_FUNCS(poppler_page_get_image)
+ LIBS=$evince_save_LIBS
+
++ POPPLER_MAJOR_VERSION=`$PKG_CONFIG --modversion poppler-glib |
sed 's/0\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\?/\1/'`
++ POPPLER_MINOR_VERSION=`$PKG_CONFIG --modversion poppler-glib |
sed 's/0\.\([[0-9]]*\)\(\.\([[0-9]]*\)\)\?/\3/'`
++ if test -z "$POPPLER_MINOR_VERSION"; then
++ POPPLER_MINOR_VERSION=0
++ fi
++
++ AC_DEFINE_UNQUOTED([POPPLER_MAJOR_VERSION],
$POPPLER_MAJOR_VERSION, [Poppler major version number])
++ AC_DEFINE_UNQUOTED([POPPLER_MINOR_VERSION],
$POPPLER_MINOR_VERSION, [Poppler minor version number])
++
+ PKG_CHECK_MODULES(CAIRO_PDF, cairo-pdf, enable_cairo_pdf=yes,
enable_cairo_pdf=no)
+ if test x$enable_cairo_pdf == xyes; then
+ AC_DEFINE([HAVE_CAIRO_PDF], [1], [defined if cairo-pdf is
available])
- [SM-Commit] GIT changes to master grimoire by Arwed von Merkatz (c539c0d26093d03f97b0ee5139beb092923ab518), Arwed von Merkatz, 03/27/2008
Archive powered by MHonArc 2.6.24.