[35738] trunk/dports/gnome/evince

reiffert at macports.org reiffert at macports.org
Fri Apr 4 10:15:47 PDT 2008


Revision: 35738
          http://trac.macosforge.org/projects/macports/changeset/35738
Author:   reiffert at macports.org
Date:     2008-04-04 10:15:46 -0700 (Fri, 04 Apr 2008)

Log Message:
-----------
evince: 2.22.0, compile against poppler-0.8.0, fix #14871, have patches from svn.gnome.org, depend on gdk-pixbuf

Modified Paths:
--------------
    trunk/dports/gnome/evince/Portfile

Added Paths:
-----------
    trunk/dports/gnome/evince/files/
    trunk/dports/gnome/evince/files/patch-config.h.in.diff
    trunk/dports/gnome/evince/files/patch-configure.ac.diff
    trunk/dports/gnome/evince/files/patch-configure.diff
    trunk/dports/gnome/evince/files/patch-pdf-ev-poppler.cc.diff

Modified: trunk/dports/gnome/evince/Portfile
===================================================================
--- trunk/dports/gnome/evince/Portfile	2008-04-04 16:54:47 UTC (rev 35737)
+++ trunk/dports/gnome/evince/Portfile	2008-04-04 17:15:46 UTC (rev 35738)
@@ -1,7 +1,7 @@
 # $Id$
 PortSystem 1.0
 name		evince
-version		2.21.1
+version		2.22.0
 description	Evince is a document viewer for multiple document formats like pdf, and many others.
 long_description   	${description}
 maintainers	nomaintainer
@@ -10,7 +10,7 @@
 homepage	http://www.gnome.org/
 master_sites    gnome:sources/evince/[strsed ${version} {/\.[0-9]*$//}]/
 use_bzip2	yes
-checksums	md5 24fb73444987357373098e57c8361ebb
+checksums	md5 9fc7eb5757549626b7515b853a5f6b97
 depends_lib	\
     port:atk \
     port:audiofile \
@@ -42,6 +42,7 @@
     port:nautilus \
     port:openssl \
     port:pango \
+    port:gdk-pixbuf \
     port:poppler \
     port:popt \
     port:tiff \
@@ -53,6 +54,15 @@
     port:pkgconfig \
     port:rarian
 
+
+# Make evince compile against poppler-0.8.0, see for details:
+# http://svn.gnome.org/viewvc/evince?view=revision&revision=2965
+
+patchfiles	patch-configure.ac.diff \
+		patch-configure.diff \
+		patch-pdf-ev-poppler.cc.diff \
+		patch-config.h.in.diff
+
 variant djvu {
     depends_lib-append port:djvulibre
 }
@@ -60,7 +70,8 @@
 configure.args  \
     --disable-scrollkeeper \
     --enable-nautilus \
-    --with-print=gtk
+    --with-print=gtk \
+    --enable-pixbuf
 configure.ldflags-append -lstdc++
 configure.cflags-append -D__DARWIN_UNIX03=1
 pre-build	{

Added: trunk/dports/gnome/evince/files/patch-config.h.in.diff
===================================================================
--- trunk/dports/gnome/evince/files/patch-config.h.in.diff	                        (rev 0)
+++ trunk/dports/gnome/evince/files/patch-config.h.in.diff	2008-04-04 17:15:46 UTC (rev 35738)
@@ -0,0 +1,12 @@
+--- config.h.in.orig	2008-04-04 19:05:47.000000000 +0200
++++ config.h.in	2008-04-04 19:05:51.000000000 +0200
+@@ -86,7 +86,8 @@
+ 
+ /* Define to 1 if you have the `poppler_page_render_for_printing' function. */
+ #undef HAVE_POPPLER_PAGE_RENDER_FOR_PRINTING
+-
++#undef POPPLER_MAJOR_VERSION
++#undef POPPLER_MINOR_VERSION
+ /* Have libpectre */
+ #undef HAVE_SPECTRE
+ 

Added: trunk/dports/gnome/evince/files/patch-configure.ac.diff
===================================================================
--- trunk/dports/gnome/evince/files/patch-configure.ac.diff	                        (rev 0)
+++ trunk/dports/gnome/evince/files/patch-configure.ac.diff	2008-04-04 17:15:46 UTC (rev 35738)
@@ -0,0 +1,18 @@
+--- configure.ac	2008/03/10 20:06:22	2964
++++ configure.ac	2008/03/14 11:13:01	2965
+@@ -218,6 +218,15 @@
+ 	    AC_CHECK_FUNCS(poppler_page_get_image)
+ 	    LIBS=$evince_save_LIBS
+ 
++	    POPPLER_MAJOR_VERSION=`$PKG_CONFIG --modversion poppler-glib | cut -d '.' -f 2` 
++	    POPPLER_MINOR_VERSION=`$PKG_CONFIG --modversion poppler-glib | cut -d '.' -f 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])

Added: trunk/dports/gnome/evince/files/patch-configure.diff
===================================================================
--- trunk/dports/gnome/evince/files/patch-configure.diff	                        (rev 0)
+++ trunk/dports/gnome/evince/files/patch-configure.diff	2008-04-04 17:15:46 UTC (rev 35738)
@@ -0,0 +1,26 @@
+--- configure.old	2008-03-10 19:59:58.000000000 +0100
++++ configure	2008-04-04 18:01:21.000000000 +0200
+@@ -26437,6 +26437,23 @@
+ 
+ 	    LIBS=$evince_save_LIBS
+ 
++	    POPPLER_MAJOR_VERSION=`$PKG_CONFIG --modversion poppler-glib | cut -d '.' -f 2`
++	    POPPLER_MINOR_VERSION=`$PKG_CONFIG --modversion poppler-glib | cut -d '.' -f 3` 
++	    if test -z "$POPPLER_MINOR_VERSION"; then
++	      POPPLER_MINOR_VERSION=0
++	    fi
++
++
++cat >>confdefs.h <<_ACEOF
++#define POPPLER_MAJOR_VERSION $POPPLER_MAJOR_VERSION
++_ACEOF
++
++
++cat >>confdefs.h <<_ACEOF
++#define POPPLER_MINOR_VERSION $POPPLER_MINOR_VERSION
++_ACEOF
++
++
+ 
+ pkg_failed=no
+ { echo "$as_me:$LINENO: checking for CAIRO_PDF" >&5

Added: trunk/dports/gnome/evince/files/patch-pdf-ev-poppler.cc.diff
===================================================================
--- trunk/dports/gnome/evince/files/patch-pdf-ev-poppler.cc.diff	                        (rev 0)
+++ trunk/dports/gnome/evince/files/patch-pdf-ev-poppler.cc.diff	2008-04-04 17:15:46 UTC (rev 35738)
@@ -0,0 +1,296 @@
+--- backend/pdf/ev-poppler.cc	2008/03/10 20:06:22	2964
++++ backend/pdf/ev-poppler.cc	2008/03/14 11:13:01	2965
+@@ -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,27 +453,12 @@
+ }
+ 
+ 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,7 +504,34 @@
+ 	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 */
+@@ -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,6 +1270,16 @@
+ 				       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,6 +1900,23 @@
+ 
+ #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,
+@@ -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;

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-changes/attachments/20080404/ec83e7f4/attachment-0001.html


More information about the macports-changes mailing list