-diff -up evince-2.22.0/backend/pdf/ev-poppler.cc.poppler72 evince-2.22.0/backend/pdf/ev-poppler.cc
---- evince-2.22.0/backend/pdf/ev-poppler.cc.poppler72 2008-03-14 10:43:57.000000000 -0400
-+++ evince-2.22.0/backend/pdf/ev-poppler.cc 2008-03-14 10:44:39.000000000 -0400
-@@ -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 @@ pdf_document_get_attachments (EvDocument
- }
-
- 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 @@ pdf_document_render (EvDocument *do
- }
- 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 @@ pdf_document_render (EvDocument *do
- 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 @@ pdf_document_render (EvDocument *do
- 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 @@ pdf_document_images_get_image_mapping (E
- 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 @@ make_thumbnail_for_page (PdfDocument
-
- 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 @@ make_thumbnail_for_page (PdfDocument
- 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 @@ pdf_document_thumbnails_get_thumbnail (E
- {
- PdfDocument *pdf_document;
- PopplerPage *poppler_page;
-- GdkPixbuf *pixbuf;
-+ GdkPixbuf *pixbuf = NULL;
- GdkPixbuf *border_pixbuf;
-
- pdf_document = PDF_DOCUMENT (document_thumbnails);
-@@ -1269,7 +1299,22 @@ pdf_document_thumbnails_get_thumbnail (E
- 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 @@ pdf_selection_render_selection (EvSelect
-
- #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 @@ pdf_selection_render_selection (EvSelect
- (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 @@ pdf_selection_get_selected_text (EvSelec
- }
-
- 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 @@ pdf_selection_get_selection_map (EvSelec
- PdfDocument *pdf_document;
- PopplerPage *poppler_page;
- PopplerRectangle points;
-+ GList *region;
- GdkRegion *retval;
-
- pdf_document = PDF_DOCUMENT (selection);
-@@ -1963,9 +2064,18 @@ pdf_selection_get_selection_map (EvSelec
- 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;
-diff -up evince-2.22.0/configure.ac.poppler72 evince-2.22.0/configure.ac
---- evince-2.22.0/configure.ac.poppler72 2008-03-14 10:43:46.000000000 -0400
-+++ evince-2.22.0/configure.ac 2008-03-14 10:44:18.000000000 -0400
-@@ -218,6 +218,15 @@ if test "x$enable_pdf" = "xyes"; then
- 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])