]> www.fi.muni.cz Git - evince.git/blobdiff - backend/pdf/ev-poppler.cc
[totem-screensaver] Adapt to GDBus API change
[evince.git] / backend / pdf / ev-poppler.cc
index 6d1c937a9401d231b6e1cec1d9d73831c7657f41..8659d082db5803e15de872accd155f470ae75c3c 100644 (file)
@@ -16,7 +16,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  */
 
 #include "config.h"
  */
 
 #include "config.h"
@@ -61,7 +61,7 @@
 #include <libxml/xpath.h>
 #include <libxml/xpathInternals.h>
 
 #include <libxml/xpath.h>
 #include <libxml/xpathInternals.h>
 
-#if (defined (HAVE_POPPLER_PAGE_RENDER)) && (defined (HAVE_CAIRO_PDF) || defined (HAVE_CAIRO_PS))
+#if (defined (HAVE_CAIRO_PDF) || defined (HAVE_CAIRO_PS))
 #define HAVE_CAIRO_PRINT
 #endif
 
 #define HAVE_CAIRO_PRINT
 #endif
 
 /* license field from Creative Commons schema, http://creativecommons.org/ns */
 #define LICENSE_URI "/x:xmpmeta/rdf:RDF/rdf:Description/cc:license/@rdf:resource"
 
 /* license field from Creative Commons schema, http://creativecommons.org/ns */
 #define LICENSE_URI "/x:xmpmeta/rdf:RDF/rdf:Description/cc:license/@rdf:resource"
 
-typedef struct {
-       PdfDocument *document;
-       char *text;
-       GList **pages;
-       guint idle;
-       int start_page;
-       int search_page;
-} PdfDocumentSearch;
-
 typedef struct {
        EvFileExporterFormat format;
 
 typedef struct {
        EvFileExporterFormat format;
 
@@ -116,39 +107,35 @@ struct _PdfDocument
        PopplerFontsIter *fonts_iter;
        int fonts_scanned_pages;
 
        PopplerFontsIter *fonts_iter;
        int fonts_scanned_pages;
 
-       PdfDocumentSearch *search;
        PdfPrintContext *print_ctx;
 
        GList *layers;
 };
 
        PdfPrintContext *print_ctx;
 
        GList *layers;
 };
 
-static void pdf_document_security_iface_init             (EvDocumentSecurityIface    *iface);
-static void pdf_document_document_thumbnails_iface_init  (EvDocumentThumbnailsIface  *iface);
-static void pdf_document_document_links_iface_init       (EvDocumentLinksIface       *iface);
-static void pdf_document_document_images_iface_init      (EvDocumentImagesIface      *iface);
-static void pdf_document_document_forms_iface_init       (EvDocumentFormsIface       *iface);
-static void pdf_document_document_fonts_iface_init       (EvDocumentFontsIface       *iface);
-static void pdf_document_document_layers_iface_init      (EvDocumentLayersIface      *iface);
-#ifdef HAVE_POPPLER_PAGE_RENDER
-static void pdf_document_document_print_iface_init       (EvDocumentPrintIface       *iface);
-#endif
-static void pdf_document_document_annotations_iface_init (EvDocumentAnnotationsIface *iface);
-static void pdf_document_document_attachments_iface_init (EvDocumentAttachmentsIface *iface);
-static void pdf_document_find_iface_init                 (EvDocumentFindIface        *iface);
-static void pdf_document_file_exporter_iface_init        (EvFileExporterIface        *iface);
-static void pdf_selection_iface_init                     (EvSelectionIface           *iface);
-static void pdf_document_page_transition_iface_init      (EvDocumentTransitionIface  *iface);
-static void pdf_document_thumbnails_get_dimensions       (EvDocumentThumbnails       *document_thumbnails,
-                                                         EvRenderContext            *rc,
-                                                         gint                       *width,
-                                                         gint                       *height);
-static int  pdf_document_get_n_pages                    (EvDocument                 *document);
+static void pdf_document_security_iface_init             (EvDocumentSecurityInterface    *iface);
+static void pdf_document_document_thumbnails_iface_init  (EvDocumentThumbnailsInterface  *iface);
+static void pdf_document_document_links_iface_init       (EvDocumentLinksInterface       *iface);
+static void pdf_document_document_images_iface_init      (EvDocumentImagesInterface      *iface);
+static void pdf_document_document_forms_iface_init       (EvDocumentFormsInterface       *iface);
+static void pdf_document_document_fonts_iface_init       (EvDocumentFontsInterface       *iface);
+static void pdf_document_document_layers_iface_init      (EvDocumentLayersInterface      *iface);
+static void pdf_document_document_print_iface_init       (EvDocumentPrintInterface       *iface);
+static void pdf_document_document_annotations_iface_init (EvDocumentAnnotationsInterface *iface);
+static void pdf_document_document_attachments_iface_init (EvDocumentAttachmentsInterface *iface);
+static void pdf_document_find_iface_init                 (EvDocumentFindInterface        *iface);
+static void pdf_document_file_exporter_iface_init        (EvFileExporterInterface        *iface);
+static void pdf_selection_iface_init                     (EvSelectionInterface           *iface);
+static void pdf_document_page_transition_iface_init      (EvDocumentTransitionInterface  *iface);
+static void pdf_document_thumbnails_get_dimensions       (EvDocumentThumbnails           *document_thumbnails,
+                                                         EvRenderContext                *rc,
+                                                         gint                           *width,
+                                                         gint                           *height);
+static int  pdf_document_get_n_pages                    (EvDocument                     *document);
 
 static EvLinkDest *ev_link_dest_from_dest    (PdfDocument       *pdf_document,
                                              PopplerDest       *dest);
 static EvLink     *ev_link_from_action       (PdfDocument       *pdf_document,
                                              PopplerAction     *action);
 
 static EvLinkDest *ev_link_dest_from_dest    (PdfDocument       *pdf_document,
                                              PopplerDest       *dest);
 static EvLink     *ev_link_from_action       (PdfDocument       *pdf_document,
                                              PopplerAction     *action);
-static void        pdf_document_search_free  (PdfDocumentSearch *search);
 static void        pdf_print_context_free    (PdfPrintContext   *ctx);
 static gboolean    attachment_save_to_buffer (PopplerAttachment *attachment,
                                              gchar            **buffer,
 static void        pdf_print_context_free    (PdfPrintContext   *ctx);
 static gboolean    attachment_save_to_buffer (PopplerAttachment *attachment,
                                              gchar            **buffer,
@@ -171,10 +158,8 @@ EV_BACKEND_REGISTER_WITH_CODE (PdfDocument, pdf_document,
                                                                 pdf_document_document_fonts_iface_init);
                                 EV_BACKEND_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_LAYERS,
                                                                 pdf_document_document_layers_iface_init);
                                                                 pdf_document_document_fonts_iface_init);
                                 EV_BACKEND_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_LAYERS,
                                                                 pdf_document_document_layers_iface_init);
-#ifdef HAVE_POPPLER_PAGE_RENDER
                                 EV_BACKEND_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_PRINT,
                                                                 pdf_document_document_print_iface_init);
                                 EV_BACKEND_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_PRINT,
                                                                 pdf_document_document_print_iface_init);
-#endif
                                 EV_BACKEND_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_ANNOTATIONS,
                                                                 pdf_document_document_annotations_iface_init);
                                 EV_BACKEND_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_ATTACHMENTS,
                                 EV_BACKEND_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_ANNOTATIONS,
                                                                 pdf_document_document_annotations_iface_init);
                                 EV_BACKEND_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_ATTACHMENTS,
@@ -189,27 +174,6 @@ EV_BACKEND_REGISTER_WITH_CODE (PdfDocument, pdf_document,
                                                                 pdf_document_page_transition_iface_init);
                         });
 
                                                                 pdf_document_page_transition_iface_init);
                         });
 
-static void
-pdf_document_search_free (PdfDocumentSearch   *search)
-{
-        PdfDocument *pdf_document = search->document;
-       int n_pages;
-       int i;
-
-        if (search->idle != 0)
-                g_source_remove (search->idle);
-
-       n_pages = pdf_document_get_n_pages (EV_DOCUMENT (pdf_document));
-       for (i = 0; i < n_pages; i++) {
-               g_list_foreach (search->pages[i], (GFunc) g_free, NULL);
-               g_list_free (search->pages[i]);
-       }
-       g_free (search->pages);
-       
-       g_free (search->text);
-       g_free (search);
-}
-
 static void
 pdf_document_dispose (GObject *object)
 {
 static void
 pdf_document_dispose (GObject *object)
 {
@@ -219,11 +183,6 @@ pdf_document_dispose (GObject *object)
                pdf_print_context_free (pdf_document->print_ctx);
                pdf_document->print_ctx = NULL;
        }
                pdf_print_context_free (pdf_document->print_ctx);
                pdf_document->print_ctx = NULL;
        }
-       
-       if (pdf_document->search) {
-               pdf_document_search_free (pdf_document->search);
-               pdf_document->search = NULL;
-       }
 
        if (pdf_document->document) {
                g_object_unref (pdf_document->document);
 
        if (pdf_document->document) {
                g_object_unref (pdf_document->document);
@@ -376,8 +335,6 @@ pdf_page_render (PopplerPage     *page,
                 EvRenderContext *rc)
 {
        cairo_surface_t *surface;
                 EvRenderContext *rc)
 {
        cairo_surface_t *surface;
-
-#ifdef HAVE_POPPLER_PAGE_RENDER
        cairo_t *cr;
 
        surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
        cairo_t *cr;
 
        surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
@@ -406,24 +363,8 @@ pdf_page_render (PopplerPage     *page,
        cairo_paint (cr);
 
        cairo_destroy (cr);
        cairo_paint (cr);
 
        cairo_destroy (cr);
-#else /* HAVE_POPPLER_PAGE_RENDER */
-       GdkPixbuf *pixbuf;
-       
-       pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
-                                FALSE, 8,
-                                width, height);
 
 
-       poppler_page_render_to_pixbuf (page,
-                                      0, 0,
-                                      width, height,
-                                      rc->scale,
-                                      rc->rotation,
-                                      pixbuf);
-       surface = ev_document_misc_surface_from_pixbuf (pixbuf);
-       g_object_unref (pixbuf);
-#endif /* HAVE_POPPLER_PAGE_RENDER */
-
-       return surface; 
+       return surface;
 }
 
 static cairo_surface_t *
 }
 
 static cairo_surface_t *
@@ -830,6 +771,29 @@ pdf_document_get_info (EvDocument *document)
        return info;
 }
 
        return info;
 }
 
+static gboolean
+pdf_document_get_backend_info (EvDocument *document, EvDocumentBackendInfo *info)
+{
+       PopplerBackend backend;
+
+       backend = poppler_get_backend ();
+       switch (backend) {
+               case POPPLER_BACKEND_CAIRO:
+                       info->name = "poppler/cairo";
+                       break;
+               case POPPLER_BACKEND_SPLASH:
+                       info->name = "poppler/splash";
+                       break;
+               default:
+                       info->name = "poppler/unknown";
+                       break;
+       }
+
+       info->version = poppler_get_version ();
+
+       return TRUE;
+}
+
 static void
 pdf_document_class_init (PdfDocumentClass *klass)
 {
 static void
 pdf_document_class_init (PdfDocumentClass *klass)
 {
@@ -846,6 +810,7 @@ pdf_document_class_init (PdfDocumentClass *klass)
        ev_document_class->get_page_label = pdf_document_get_page_label;
        ev_document_class->render = pdf_document_render;
        ev_document_class->get_info = pdf_document_get_info;
        ev_document_class->get_page_label = pdf_document_get_page_label;
        ev_document_class->render = pdf_document_render;
        ev_document_class->get_info = pdf_document_get_info;
+       ev_document_class->get_backend_info = pdf_document_get_backend_info;
 }
 
 /* EvDocumentSecurity */
 }
 
 /* EvDocumentSecurity */
@@ -869,7 +834,7 @@ pdf_document_set_password (EvDocumentSecurity *document_security,
 }
 
 static void
 }
 
 static void
-pdf_document_security_iface_init (EvDocumentSecurityIface *iface)
+pdf_document_security_iface_init (EvDocumentSecurityInterface *iface)
 {
        iface->has_document_security = pdf_document_has_document_security;
        iface->set_password = pdf_document_set_password;
 {
        iface->has_document_security = pdf_document_has_document_security;
        iface->set_password = pdf_document_set_password;
@@ -989,7 +954,7 @@ pdf_document_fonts_fill_model (EvDocumentFonts *document_fonts,
 }
 
 static void
 }
 
 static void
-pdf_document_document_fonts_iface_init (EvDocumentFontsIface *iface)
+pdf_document_document_fonts_iface_init (EvDocumentFontsInterface *iface)
 {
        iface->fill_model = pdf_document_fonts_fill_model;
        iface->scan = pdf_document_fonts_scan;
 {
        iface->fill_model = pdf_document_fonts_fill_model;
        iface->scan = pdf_document_fonts_scan;
@@ -1139,6 +1104,14 @@ ev_link_from_action (PdfDocument   *pdf_document,
                case POPPLER_ACTION_MOVIE:
                        unimplemented_action = "POPPLER_ACTION_MOVIE";
                        break;
                case POPPLER_ACTION_MOVIE:
                        unimplemented_action = "POPPLER_ACTION_MOVIE";
                        break;
+#if POPPLER_CHECK_VERSION (0, 13, 2)
+               case POPPLER_ACTION_RENDITION:
+                       unimplemented_action = "POPPLER_ACTION_RENDITION";
+                       break;
+               case POPPLER_ACTION_OCG_STATE:
+                       unimplemented_action = "POPPLER_ACTION_OCG_STATE";
+                       break;
+#endif
                case POPPLER_ACTION_UNKNOWN:
                        unimplemented_action = "POPPLER_ACTION_UNKNOWN";
        }
                case POPPLER_ACTION_UNKNOWN:
                        unimplemented_action = "POPPLER_ACTION_UNKNOWN";
        }
@@ -1316,7 +1289,7 @@ pdf_document_links_find_link_dest (EvDocumentLinks  *document_links,
 }
 
 static void
 }
 
 static void
-pdf_document_document_links_iface_init (EvDocumentLinksIface *iface)
+pdf_document_document_links_iface_init (EvDocumentLinksInterface *iface)
 {
        iface->has_document_links = pdf_document_links_has_document_links;
        iface->get_links_model = pdf_document_links_get_links_model;
 {
        iface->has_document_links = pdf_document_links_has_document_links;
        iface->get_links_model = pdf_document_links_get_links_model;
@@ -1365,7 +1338,6 @@ pdf_document_images_get_image (EvDocumentImages *document_images,
                               EvImage          *image)
 {
        GdkPixbuf       *retval = NULL;
                               EvImage          *image)
 {
        GdkPixbuf       *retval = NULL;
-#ifdef HAVE_POPPLER_PAGE_GET_IMAGE
        PdfDocument     *pdf_document;
        PopplerPage     *poppler_page;
        cairo_surface_t *surface;
        PdfDocument     *pdf_document;
        PopplerPage     *poppler_page;
        cairo_surface_t *surface;
@@ -1381,12 +1353,12 @@ pdf_document_images_get_image (EvDocumentImages *document_images,
        }
 
        g_object_unref (poppler_page);
        }
 
        g_object_unref (poppler_page);
-#endif
+
        return retval;
 }
 
 static void
        return retval;
 }
 
 static void
-pdf_document_document_images_iface_init (EvDocumentImagesIface *iface)
+pdf_document_document_images_iface_init (EvDocumentImagesInterface *iface)
 {
        iface->get_image_mapping = pdf_document_images_get_image_mapping;
        iface->get_image = pdf_document_images_get_image;
 {
        iface->get_image_mapping = pdf_document_images_get_image_mapping;
        iface->get_image = pdf_document_images_get_image;
@@ -1507,7 +1479,7 @@ pdf_document_thumbnails_get_dimensions (EvDocumentThumbnails *document_thumbnail
 }
 
 static void
 }
 
 static void
-pdf_document_document_thumbnails_iface_init (EvDocumentThumbnailsIface *iface)
+pdf_document_document_thumbnails_iface_init (EvDocumentThumbnailsInterface *iface)
 {
        iface->get_thumbnail = pdf_document_thumbnails_get_thumbnail;
        iface->get_dimensions = pdf_document_thumbnails_get_dimensions;
 {
        iface->get_thumbnail = pdf_document_thumbnails_get_thumbnail;
        iface->get_dimensions = pdf_document_thumbnails_get_dimensions;
@@ -1523,7 +1495,8 @@ pdf_document_find_find_text (EvDocumentFind *document_find,
        GList *matches, *l;
        PopplerPage *poppler_page;
        gdouble height;
        GList *matches, *l;
        PopplerPage *poppler_page;
        gdouble height;
-       
+       GList *retval = NULL;
+
        g_return_val_if_fail (POPPLER_IS_PAGE (page->backend_page), NULL);
        g_return_val_if_fail (text != NULL, NULL);
 
        g_return_val_if_fail (POPPLER_IS_PAGE (page->backend_page), NULL);
        g_return_val_if_fail (text != NULL, NULL);
 
@@ -1536,18 +1509,26 @@ pdf_document_find_find_text (EvDocumentFind *document_find,
        poppler_page_get_size (poppler_page, NULL, &height);
        for (l = matches; l && l->data; l = g_list_next (l)) {
                PopplerRectangle *rect = (PopplerRectangle *)l->data;
        poppler_page_get_size (poppler_page, NULL, &height);
        for (l = matches; l && l->data; l = g_list_next (l)) {
                PopplerRectangle *rect = (PopplerRectangle *)l->data;
-               gdouble           tmp;
+               EvRectangle      *ev_rect;
 
 
-               tmp = rect->y1;
-               rect->y1 = height - rect->y2;
-               rect->y2 = height - tmp;
+               ev_rect = ev_rectangle_new ();
+               ev_rect->x1 = rect->x1;
+               ev_rect->x2 = rect->x2;
+               /* Invert this for X-style coordinates */
+               ev_rect->y1 = height - rect->y2;
+               ev_rect->y2 = height - rect->y1;
+
+               retval = g_list_prepend (retval, ev_rect);
        }
        }
-       
-       return matches;
+
+       g_list_foreach (matches, (GFunc)poppler_rectangle_free, NULL);
+       g_list_free (matches);
+
+       return g_list_reverse (retval);
 }
 
 static void
 }
 
 static void
-pdf_document_find_iface_init (EvDocumentFindIface *iface)
+pdf_document_find_iface_init (EvDocumentFindInterface *iface)
 {
         iface->find_text = pdf_document_find_find_text;
 }
 {
         iface->find_text = pdf_document_find_find_text;
 }
@@ -1817,21 +1798,17 @@ pdf_document_file_exporter_get_capabilities (EvFileExporter *exporter)
                EV_FILE_EXPORTER_CAN_REVERSE |
                EV_FILE_EXPORTER_CAN_SCALE |
 #ifdef HAVE_CAIRO_PRINT
                EV_FILE_EXPORTER_CAN_REVERSE |
                EV_FILE_EXPORTER_CAN_SCALE |
 #ifdef HAVE_CAIRO_PRINT
-#ifdef HAVE_POPPLER_PAGE_RENDER
                EV_FILE_EXPORTER_CAN_NUMBER_UP |
 #endif
                EV_FILE_EXPORTER_CAN_NUMBER_UP |
 #endif
-#endif
                
 #ifdef HAVE_CAIRO_PDF
                
 #ifdef HAVE_CAIRO_PDF
-#ifdef HAVE_POPPLER_PAGE_RENDER
                EV_FILE_EXPORTER_CAN_GENERATE_PDF |
                EV_FILE_EXPORTER_CAN_GENERATE_PDF |
-#endif
 #endif
                EV_FILE_EXPORTER_CAN_GENERATE_PS);
 }
 
 static void
 #endif
                EV_FILE_EXPORTER_CAN_GENERATE_PS);
 }
 
 static void
-pdf_document_file_exporter_iface_init (EvFileExporterIface *iface)
+pdf_document_file_exporter_iface_init (EvFileExporterInterface *iface)
 {
         iface->begin = pdf_document_file_exporter_begin;
        iface->begin_page = pdf_document_file_exporter_begin_page;
 {
         iface->begin = pdf_document_file_exporter_begin;
        iface->begin_page = pdf_document_file_exporter_begin_page;
@@ -1841,7 +1818,6 @@ pdf_document_file_exporter_iface_init (EvFileExporterIface *iface)
        iface->get_capabilities = pdf_document_file_exporter_get_capabilities;
 }
 
        iface->get_capabilities = pdf_document_file_exporter_get_capabilities;
 }
 
-#ifdef HAVE_POPPLER_PAGE_RENDER
 /* EvDocumentPrint */
 static void
 pdf_document_print_print_page (EvDocumentPrint *document,
 /* EvDocumentPrint */
 static void
 pdf_document_print_print_page (EvDocumentPrint *document,
@@ -1854,11 +1830,10 @@ pdf_document_print_print_page (EvDocumentPrint *document,
 }
 
 static void
 }
 
 static void
-pdf_document_document_print_iface_init (EvDocumentPrintIface *iface)
+pdf_document_document_print_iface_init (EvDocumentPrintInterface *iface)
 {
        iface->print_page = pdf_document_print_print_page;
 }
 {
        iface->print_page = pdf_document_print_print_page;
 }
-#endif /* HAVE_POPPLER_PAGE_RENDER */
 
 static void
 pdf_selection_render_selection (EvSelection      *selection,
 
 static void
 pdf_selection_render_selection (EvSelection      *selection,
@@ -1871,6 +1846,8 @@ pdf_selection_render_selection (EvSelection      *selection,
                                GdkColor         *base)
 {
        PopplerPage *poppler_page;
                                GdkColor         *base)
 {
        PopplerPage *poppler_page;
+       cairo_t *cr;
+       PopplerColor text_color, base_color;
        double width_points, height_points;
        gint width, height;
 
        double width_points, height_points;
        gint width, height;
 
@@ -1881,10 +1858,6 @@ pdf_selection_render_selection (EvSelection      *selection,
        width = (int) ((width_points * rc->scale) + 0.5);
        height = (int) ((height_points * rc->scale) + 0.5);
 
        width = (int) ((width_points * rc->scale) + 0.5);
        height = (int) ((height_points * rc->scale) + 0.5);
 
-#ifdef HAVE_POPPLER_PAGE_RENDER
-       cairo_t *cr;
-       PopplerColor text_color, base_color;
-       
        text_color.red = text->red;
        text_color.green = text->green;
        text_color.blue = text->blue;
        text_color.red = text->red;
        text_color.green = text->green;
        text_color.blue = text->blue;
@@ -1913,30 +1886,11 @@ pdf_selection_render_selection (EvSelection      *selection,
                                       &text_color,
                                       &base_color);
        cairo_destroy (cr);
                                       &text_color,
                                       &base_color);
        cairo_destroy (cr);
-#else /* HAVE_POPPLER_PAGE_RENDER */
-       GdkPixbuf *pixbuf;
-       
-       pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
-                                TRUE, 8,
-                                width, height);
-
-       poppler_page_render_selection_to_pixbuf (poppler_page,
-                                                rc->scale, rc->rotation, pixbuf,
-                                                (PopplerRectangle *)points,
-                                                (PopplerRectangle *)old_points,
-                                                (PopplerSelectionStyle)style,
-                                                text,
-                                                base);
-       if (*surface)
-               cairo_surface_destroy (*surface);
-       *surface = ev_document_misc_surface_from_pixbuf (pixbuf);
-       g_object_unref (pixbuf);
-#endif /* HAVE_POPPLER_PAGE_RENDER */
 }
 
 static gchar *
 pdf_selection_get_selected_text (EvSelection     *selection,
 }
 
 static gchar *
 pdf_selection_get_selected_text (EvSelection     *selection,
-                                EvRenderContext *rc,
+                                EvPage          *page,
                                 EvSelectionStyle style,
                                 EvRectangle     *points)
 {
                                 EvSelectionStyle style,
                                 EvRectangle     *points)
 {
@@ -1945,7 +1899,7 @@ pdf_selection_get_selected_text (EvSelection     *selection,
        double height;
        char *retval;
        
        double height;
        char *retval;
        
-       poppler_page = POPPLER_PAGE (rc->page->backend_page);
+       poppler_page = POPPLER_PAGE (page->backend_page);
 
        poppler_page_get_size (poppler_page, NULL, &height);
        r.x1 = points->x1;
 
        poppler_page_get_size (poppler_page, NULL, &height);
        r.x1 = points->x1;
@@ -2033,7 +1987,7 @@ pdf_selection_get_selection_map (EvSelection *selection,
 }
 
 static void
 }
 
 static void
-pdf_selection_iface_init (EvSelectionIface *iface)
+pdf_selection_iface_init (EvSelectionInterface *iface)
 {
         iface->render_selection = pdf_selection_render_selection;
        iface->get_selected_text = pdf_selection_get_selected_text;
 {
         iface->render_selection = pdf_selection_render_selection;
        iface->get_selected_text = pdf_selection_get_selected_text;
@@ -2100,7 +2054,7 @@ pdf_document_get_effect (EvDocumentTransition *trans,
 }
 
 static void
 }
 
 static void
-pdf_document_page_transition_iface_init (EvDocumentTransitionIface *iface)
+pdf_document_page_transition_iface_init (EvDocumentTransitionInterface *iface)
 {
        iface->get_page_duration = pdf_document_get_page_duration;
        iface->get_effect = pdf_document_get_effect;
 {
        iface->get_page_duration = pdf_document_get_page_duration;
        iface->get_effect = pdf_document_get_effect;
@@ -2466,7 +2420,7 @@ pdf_document_forms_form_field_choice_get_text (EvDocumentForms *document,
 }
 
 static void
 }
 
 static void
-pdf_document_document_forms_iface_init (EvDocumentFormsIface *iface)
+pdf_document_document_forms_iface_init (EvDocumentFormsInterface *iface)
 {
        iface->get_form_fields = pdf_document_forms_get_form_fields;
        iface->form_field_text_get_text = pdf_document_forms_form_field_text_get_text;
 {
        iface->get_form_fields = pdf_document_forms_get_form_fields;
        iface->form_field_text_get_text = pdf_document_forms_form_field_text_get_text;
@@ -2520,7 +2474,6 @@ ev_annot_from_poppler_annot (PopplerAnnot *poppler_annot,
                        ev_annot_text->is_open = poppler_annot_text_get_is_open (poppler_text);
                }
                        break;
                        ev_annot_text->is_open = poppler_annot_text_get_is_open (poppler_text);
                }
                        break;
-#ifdef HAVE_POPPLER_ANNOT_FILE_ATTACHMENT_GET_ATTACHMENT
                case POPPLER_ANNOT_FILE_ATTACHMENT: {
                        PopplerAnnotFileAttachment *poppler_annot_attachment;
                        EvAnnotationAttachment     *ev_annot_attachment;
                case POPPLER_ANNOT_FILE_ATTACHMENT: {
                        PopplerAnnotFileAttachment *poppler_annot_attachment;
                        EvAnnotationAttachment     *ev_annot_attachment;
@@ -2552,7 +2505,6 @@ ev_annot_from_poppler_annot (PopplerAnnot *poppler_annot,
                                g_object_unref (poppler_attachment);
                }
                        break;
                                g_object_unref (poppler_attachment);
                }
                        break;
-#endif /* HAVE_POPPLER_ANNOT_FILE_ATTACHMENT_GET_ATTACHMENT */
                case POPPLER_ANNOT_LINK:
                case POPPLER_ANNOT_WIDGET:
                        /* Ignore link and widgets annots since they are already handled */
                case POPPLER_ANNOT_LINK:
                case POPPLER_ANNOT_WIDGET:
                        /* Ignore link and widgets annots since they are already handled */
@@ -2700,7 +2652,7 @@ pdf_document_annotations_annotation_set_contents (EvDocumentAnnotations *documen
 }
 
 static void
 }
 
 static void
-pdf_document_document_annotations_iface_init (EvDocumentAnnotationsIface *iface)
+pdf_document_document_annotations_iface_init (EvDocumentAnnotationsInterface *iface)
 {
        iface->get_annotations = pdf_document_annotations_get_annotations;
        iface->annotation_set_contents = pdf_document_annotations_annotation_set_contents;
 {
        iface->get_annotations = pdf_document_annotations_get_annotations;
        iface->annotation_set_contents = pdf_document_annotations_annotation_set_contents;
@@ -2817,7 +2769,7 @@ pdf_document_attachments_has_attachments (EvDocumentAttachments *document)
 }
 
 static void
 }
 
 static void
-pdf_document_document_attachments_iface_init (EvDocumentAttachmentsIface *iface)
+pdf_document_document_attachments_iface_init (EvDocumentAttachmentsInterface *iface)
 {
        iface->has_attachments = pdf_document_attachments_has_attachments;
        iface->get_attachments = pdf_document_attachments_get_attachments;
 {
        iface->has_attachments = pdf_document_attachments_has_attachments;
        iface->get_attachments = pdf_document_attachments_get_attachments;
@@ -2947,7 +2899,7 @@ pdf_document_layers_layer_is_visible (EvDocumentLayers *document,
 }
 
 static void
 }
 
 static void
-pdf_document_document_layers_iface_init (EvDocumentLayersIface *iface)
+pdf_document_document_layers_iface_init (EvDocumentLayersInterface *iface)
 {
        iface->has_layers = pdf_document_layers_has_layers;
        iface->get_layers = pdf_document_layers_get_layers;
 {
        iface->has_layers = pdf_document_layers_has_layers;
        iface->get_layers = pdf_document_layers_get_layers;