]> www.fi.muni.cz Git - evince.git/commitdiff
[pdf] Implement EvDocumentPrint interface
authorCarlos Garcia Campos <carlosgc@gnome.org>
Sun, 17 May 2009 14:27:33 +0000 (16:27 +0200)
committerCarlos Garcia Campos <carlosgc@gnome.org>
Sun, 17 May 2009 14:40:31 +0000 (16:40 +0200)
backend/pdf/ev-poppler.cc

index a9a0a8555e1763311d4300c8a6be6b86dc386862..ec2bbc0835b7f01636344c939e2930d2145c09ce 100644 (file)
@@ -45,6 +45,7 @@
 #include "ev-document-transition.h"
 #include "ev-document-forms.h"
 #include "ev-document-layers.h"
+#include "ev-document-print.h"
 #include "ev-document-annotations.h"
 #include "ev-selection.h"
 #include "ev-transition-effect.h"
@@ -113,6 +114,9 @@ static void pdf_document_document_images_iface_init      (EvDocumentImagesIface
 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_find_iface_init                 (EvDocumentFindIface        *iface);
 static void pdf_document_file_exporter_iface_init        (EvFileExporterIface        *iface);
@@ -147,6 +151,10 @@ 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);
+#ifdef HAVE_POPPLER_PAGE_RENDER
+                                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_FIND,
@@ -1713,6 +1721,25 @@ pdf_document_file_exporter_iface_init (EvFileExporterIface *iface)
        iface->get_capabilities = pdf_document_file_exporter_get_capabilities;
 }
 
+#ifdef HAVE_POPPLER_PAGE_RENDER
+/* EvDocumentPrint */
+static void
+pdf_document_print_print_page (EvDocumentPrint *document,
+                              EvPage          *page,
+                              cairo_t         *cr)
+{
+       PdfDocument *pdf_document = PDF_DOCUMENT (document);
+
+       poppler_page_render_for_printing (POPPLER_PAGE (page->backend_page), cr);
+}
+
+static void
+pdf_document_document_print_iface_init (EvDocumentPrintIface *iface)
+{
+       iface->print_page = pdf_document_print_print_page;
+}
+#endif /* HAVE_POPPLER_PAGE_RENDER */
+
 static void
 pdf_selection_render_selection (EvSelection      *selection,
                                EvRenderContext  *rc,