diff options
author | Carlos 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) |
commit | e70119b293ab8a26bdea4a56407bb0f41f1e43aa (patch) | |
tree | 627b9853902c99806786543eb0155151925cfed6 /backend/pdf/ev-poppler.cc | |
parent | 0b6b9a984c7cfbf0e313a10f9bd09f77cb3be164 (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/ev-poppler.cc')
-rw-r--r-- | backend/pdf/ev-poppler.cc | 64 |
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 |