]> git.pld-linux.org Git - packages/evince.git/commitdiff
- fix building with poppler-0.8.0; stolen from Fedora (poppler072.patch)
authorSzymon Siwek <sls@pld-linux.org>
Tue, 1 Apr 2008 19:19:12 +0000 (19:19 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    evince-poppler080.patch -> 1.1

evince-poppler080.patch [new file with mode: 0644]

diff --git a/evince-poppler080.patch b/evince-poppler080.patch
new file mode 100644 (file)
index 0000000..a34f94c
--- /dev/null
@@ -0,0 +1,316 @@
+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])
This page took 0.151944 seconds and 4 git commands to generate.