]> www.fi.muni.cz Git - evince.git/blobdiff - backend/pdf/ev-poppler.cc
[shell] Do not link to poppler directly
[evince.git] / backend / pdf / ev-poppler.cc
index 503e468d23876d0a119847694f27e1be8bce7666..389b436e9388a9db3f246b7b059a7aca893aa1be 100644 (file)
@@ -830,6 +830,29 @@ pdf_document_get_info (EvDocument *document)
        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)
 {
@@ -846,6 +869,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_backend_info = pdf_document_get_backend_info;
 }
 
 /* EvDocumentSecurity */
@@ -1260,7 +1284,7 @@ pdf_document_links_get_links_model (EvDocumentLinks *document_links)
 
 static GList *
 pdf_document_links_get_links (EvDocumentLinks *document_links,
-                             gint             page)
+                             EvPage          *page)
 {
        PdfDocument *pdf_document;
        PopplerPage *poppler_page;
@@ -1270,8 +1294,7 @@ pdf_document_links_get_links (EvDocumentLinks *document_links,
        double height;
 
        pdf_document = PDF_DOCUMENT (document_links);
-       poppler_page = poppler_document_get_page (pdf_document->document,
-                                                 page);
+       poppler_page = POPPLER_PAGE (page->backend_page);
        mapping_list = poppler_page_get_link_mapping (poppler_page);
        poppler_page_get_size (poppler_page, NULL, &height);
 
@@ -1293,7 +1316,6 @@ pdf_document_links_get_links (EvDocumentLinks *document_links,
        }
 
        poppler_page_free_link_mapping (mapping_list);
-       g_object_unref (poppler_page);
 
        return g_list_reverse (retval);
 }
@@ -1328,7 +1350,7 @@ pdf_document_document_links_iface_init (EvDocumentLinksIface *iface)
 
 static GList *
 pdf_document_images_get_image_mapping (EvDocumentImages *document_images,
-                                      gint              page)
+                                      EvPage           *page)
 {
        GList *retval = NULL;
        PdfDocument *pdf_document;
@@ -1337,7 +1359,7 @@ pdf_document_images_get_image_mapping (EvDocumentImages *document_images,
        GList *list;
 
        pdf_document = PDF_DOCUMENT (document_images);
-       poppler_page = poppler_document_get_page (pdf_document->document, page);
+       poppler_page = POPPLER_PAGE (page->backend_page);
        mapping_list = poppler_page_get_image_mapping (poppler_page);
 
        for (list = mapping_list; list; list = list->next) {
@@ -1348,7 +1370,7 @@ pdf_document_images_get_image_mapping (EvDocumentImages *document_images,
 
                ev_image_mapping = g_new (EvMapping, 1);
                
-               ev_image_mapping->data = ev_image_new (page, image_mapping->image_id);
+               ev_image_mapping->data = ev_image_new (page->index, image_mapping->image_id);
                ev_image_mapping->area.x1 = image_mapping->area.x1;
                ev_image_mapping->area.y1 = image_mapping->area.y1;
                ev_image_mapping->area.x2 = image_mapping->area.x2;
@@ -1358,7 +1380,6 @@ pdf_document_images_get_image_mapping (EvDocumentImages *document_images,
        }
 
        poppler_page_free_image_mapping (mapping_list);
-       g_object_unref (poppler_page);
 
        return g_list_reverse (retval);
 }
@@ -2012,15 +2033,15 @@ pdf_selection_get_selection_region (EvSelection     *selection,
 }
 
 static GdkRegion *
-pdf_selection_get_selection_map (EvSelection     *selection,
-                                EvRenderContext *rc)
+pdf_selection_get_selection_map (EvSelection *selection,
+                                EvPage      *page)
 {
        PopplerPage *poppler_page;
        PopplerRectangle points;
        GList *region;
        GdkRegion *retval;
 
-       poppler_page = POPPLER_PAGE (rc->page->backend_page);
+       poppler_page = POPPLER_PAGE (page->backend_page);
 
        points.x1 = 0.0;
        points.y1 = 0.0;
@@ -2538,15 +2559,12 @@ ev_annot_from_poppler_annot (PopplerAnnot *poppler_annot,
                        if (poppler_attachment &&
                            attachment_save_to_buffer (poppler_attachment, &data, &size, &error)) {
                                EvAttachment *ev_attachment;
-                               gchar        *name;
 
-                               name = poppler_annot_file_attachment_get_name (poppler_annot_attachment);
-                               ev_attachment = ev_attachment_new (name,
+                               ev_attachment = ev_attachment_new (poppler_attachment->name,
                                                                   poppler_attachment->description,
                                                                   poppler_attachment->mtime,
                                                                   poppler_attachment->ctime,
                                                                   size, data);
-                               g_free (name);
                                ev_annot = ev_annotation_attachment_new (page, ev_attachment);
                                g_object_unref (ev_attachment);
                        } else if (error) {