Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/backend/pdf
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2007-07-26 14:53:17 (GMT)
committer Carlos Garcia Campos <carlosgc@src.gnome.org>2007-07-26 14:53:17 (GMT)
commite70119b293ab8a26bdea4a56407bb0f41f1e43aa (patch)
tree627b9853902c99806786543eb0155151925cfed6 /backend/pdf
parent0b6b9a984c7cfbf0e313a10f9bd09f77cb3be164 (diff)
Use capabilities to know which options should be offered by the print
2007-07-26 Carlos Garcia Campos <carlosgc@gnome.org> * backend/dvi/dvi-document.c: (dvi_document_file_exporter_begin), (dvi_document_file_exporter_do_page), (dvi_document_file_exporter_get_capabilities), (dvi_document_file_exporter_iface_init): * backend/ps/ps-document.c: (ps_document_file_exporter_begin), (ps_document_file_exporter_do_page), (ps_document_file_exporter_get_capabilities), (ps_document_file_exporter_iface_init): * backend/djvu/djvu-document.c: (djvu_document_file_exporter_begin), (djvu_document_file_exporter_end), (djvu_document_file_exporter_get_capabilities), (djvu_document_file_exporter_iface_init): * backend/tiff/tiff-document.c: (tiff_document_file_exporter_begin), (tiff_document_file_exporter_get_capabilities), (tiff_document_document_file_exporter_iface_init): * backend/pdf/ev-poppler.cc: (pdf_document_file_exporter_begin), (pdf_document_file_exporter_do_page), (pdf_document_file_exporter_get_capabilities), (pdf_document_file_exporter_iface_init): * libdocument/ev-file-exporter.[ch]: (ev_file_exporter_begin), (ev_file_exporter_get_capabilities): * shell/ev-print-job.c: (ev_print_job_use_print_dialog_settings), (idle_print_handler), (ev_print_job_print): * shell/ev-jobs.c: (ev_job_print_run): * shell/ev-window.c: (ev_window_print_send), (ev_window_print_range): Use capabilities to know which options should be offered by the print dialog depending on the document backend. svn path=/trunk/; revision=2580
Diffstat (limited to 'backend/pdf')
-rw-r--r--backend/pdf/ev-poppler.cc64
1 files changed, 29 insertions, 35 deletions
diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc
index f96fdd4..4b6b114 100644
--- a/backend/pdf/ev-poppler.cc
+++ b/backend/pdf/ev-poppler.cc
@@ -1506,17 +1506,6 @@ pdf_document_find_iface_init (EvDocumentFindIface *iface)
iface->cancel = pdf_document_find_cancel;
}
-static const gboolean supported_formats[] = {
- TRUE, /* EV_FILE_FORMAT_PS */
-#ifdef HAVE_CAIRO_PDF
-#ifdef HAVE_POPPLER_PAGE_RENDER
- TRUE, /* EV_FILE_FORMAT_PDF */
-#else
- FALSE, /* EV_FILE_FORMAT_PDF */
-#endif
-#endif
-};
-
static void
pdf_print_context_free (PdfPrintContext *ctx)
{
@@ -1536,22 +1525,9 @@ pdf_print_context_free (PdfPrintContext *ctx)
g_free (ctx);
}
-static gboolean
-pdf_document_file_exporter_format_supported (EvFileExporter *exporter,
- EvFileExporterFormat format)
-{
- return supported_formats[format];
-}
-
static void
-pdf_document_file_exporter_begin (EvFileExporter *exporter,
- EvFileExporterFormat format,
- const char *filename,
- int first_page,
- int last_page,
- double width,
- double height,
- gboolean duplex)
+pdf_document_file_exporter_begin (EvFileExporter *exporter,
+ EvFileExporterContext *fc)
{
PdfDocument *pdf_document = PDF_DOCUMENT (exporter);
PdfPrintContext *ctx;
@@ -1560,22 +1536,22 @@ pdf_document_file_exporter_begin (EvFileExporter *exporter,
pdf_print_context_free (pdf_document->print_ctx);
pdf_document->print_ctx = g_new0 (PdfPrintContext, 1);
ctx = pdf_document->print_ctx;
- ctx->format = format;
+ ctx->format = fc->format;
- switch (format) {
+ switch (fc->format) {
case EV_FILE_FORMAT_PS:
ctx->ps_file = poppler_ps_file_new (pdf_document->document,
- filename, first_page,
- last_page - first_page + 1);
- poppler_ps_file_set_paper_size (ctx->ps_file, width, height);
- poppler_ps_file_set_duplex (ctx->ps_file, duplex);
+ fc->filename, fc->first_page,
+ fc->last_page - fc->first_page + 1);
+ poppler_ps_file_set_paper_size (ctx->ps_file, fc->paper_width, fc->paper_height);
+ poppler_ps_file_set_duplex (ctx->ps_file, fc->duplex);
break;
case EV_FILE_FORMAT_PDF: {
#ifdef HAVE_CAIRO_PDF
cairo_surface_t *surface;
- surface = cairo_pdf_surface_create (filename, width, height);
+ surface = cairo_pdf_surface_create (fc->filename, fc->paper_width, fc->paper_height);
ctx->pdf_cairo = cairo_create (surface);
cairo_surface_destroy (surface);
#endif
@@ -1587,7 +1563,8 @@ pdf_document_file_exporter_begin (EvFileExporter *exporter,
}
static void
-pdf_document_file_exporter_do_page (EvFileExporter *exporter, EvRenderContext *rc)
+pdf_document_file_exporter_do_page (EvFileExporter *exporter,
+ EvRenderContext *rc)
{
PdfDocument *pdf_document = PDF_DOCUMENT (exporter);
PdfPrintContext *ctx = pdf_document->print_ctx;
@@ -1629,13 +1606,30 @@ pdf_document_file_exporter_end (EvFileExporter *exporter)
pdf_document->print_ctx = NULL;
}
+static EvFileExporterCapabilities
+pdf_document_file_exporter_get_capabilities (EvFileExporter *exporter)
+{
+ return (EvFileExporterCapabilities) (
+ EV_FILE_EXPORTER_CAN_PAGE_SET |
+ EV_FILE_EXPORTER_CAN_COPIES |
+ EV_FILE_EXPORTER_CAN_COLLATE |
+ EV_FILE_EXPORTER_CAN_REVERSE |
+ EV_FILE_EXPORTER_CAN_SCALE |
+#ifdef HAVE_CAIRO_PDF
+#ifdef HAVE_POPPLER_PAGE_RENDER
+ EV_FILE_EXPORTER_CAN_GENERATE_PDF |
+#endif
+#endif
+ EV_FILE_EXPORTER_CAN_GENERATE_PS);
+}
+
static void
pdf_document_file_exporter_iface_init (EvFileExporterIface *iface)
{
- iface->format_supported = pdf_document_file_exporter_format_supported;
iface->begin = pdf_document_file_exporter_begin;
iface->do_page = pdf_document_file_exporter_do_page;
iface->end = pdf_document_file_exporter_end;
+ iface->get_capabilities = pdf_document_file_exporter_get_capabilities;
}
static void