X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=backend%2Fdvi%2Fdvi-document.c;h=876d577092b026153984732fb65f25a0e6094108;hb=f343927df4325959193353c52cff1ea4b20b2286;hp=c85e4f5a70d712953e5f782f7f4e490106929e3d;hpb=1fcca0b8041de0d6074d7e17fba174da36c65f99;p=evince.git diff --git a/backend/dvi/dvi-document.c b/backend/dvi/dvi-document.c index c85e4f5a..876d5770 100644 --- a/backend/dvi/dvi-document.c +++ b/backend/dvi/dvi-document.c @@ -17,6 +17,9 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include "config.h" + +#include #include "dvi-document.h" #include "ev-document-thumbnails.h" #include "ev-document-misc.h" @@ -26,7 +29,6 @@ #include "fonts.h" #include "cairo-device.h" -#include #include GMutex *dvi_context_mutex = NULL; @@ -65,18 +67,12 @@ typedef struct _DviDocumentClass DviDocumentClass; static void dvi_document_document_iface_init (EvDocumentIface *iface); static void dvi_document_document_thumbnails_iface_init (EvDocumentThumbnailsIface *iface); static void dvi_document_file_exporter_iface_init (EvFileExporterIface *iface); -static void dvi_document_get_page_size (EvDocument *document, - int page, - double *width, - double *height); static void dvi_document_do_color_special (DviContext *dvi, const char *prefix, const char *arg); -G_DEFINE_TYPE_WITH_CODE - (DviDocument, dvi_document, G_TYPE_OBJECT, - { - G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT, dvi_document_document_iface_init); +EV_BACKEND_REGISTER_WITH_CODE (DviDocument, dvi_document, + { G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_THUMBNAILS, dvi_document_document_thumbnails_iface_init); G_IMPLEMENT_INTERFACE (EV_TYPE_FILE_EXPORTER, dvi_document_file_exporter_iface_init); }); @@ -150,7 +146,7 @@ dvi_document_get_n_pages (EvDocument *document) static void dvi_document_get_page_size (EvDocument *document, - int page, + EvPage *page, double *width, double *height) { @@ -177,7 +173,7 @@ dvi_document_render (EvDocument *document, */ g_mutex_lock (dvi_context_mutex); - mdvi_setpage (dvi_document->context, rc->page); + mdvi_setpage (dvi_document->context, rc->page->index); mdvi_set_shrink (dvi_document->context, (int)((dvi_document->params->hshrink - 1) / rc->scale) + 1, @@ -250,12 +246,6 @@ dvi_document_class_init (DviDocumentClass *klass) dvi_context_mutex = g_mutex_new (); } -static gboolean -dvi_document_can_get_text (EvDocument *document) -{ - return FALSE; -} - static EvDocumentInfo * dvi_document_get_info (EvDocument *document) { @@ -271,7 +261,6 @@ dvi_document_document_iface_init (EvDocumentIface *iface) { iface->load = dvi_document_load; iface->save = dvi_document_save; - iface->can_get_text = dvi_document_can_get_text; iface->get_n_pages = dvi_document_get_n_pages; iface->get_page_size = dvi_document_get_page_size; iface->render = dvi_document_render; @@ -281,8 +270,8 @@ dvi_document_document_iface_init (EvDocumentIface *iface) static void dvi_document_thumbnails_get_dimensions (EvDocumentThumbnails *document, EvRenderContext *rc, - gint *width, - gint *height) + gint *width, + gint *height) { DviDocument *dvi_document = DVI_DOCUMENT (document); gdouble page_width = dvi_document->base_width; @@ -314,7 +303,7 @@ dvi_document_thumbnails_get_thumbnail (EvDocumentThumbnails *document, g_mutex_lock (dvi_context_mutex); - mdvi_setpage (dvi_document->context, rc->page); + mdvi_setpage (dvi_document->context, rc->page->index); mdvi_set_shrink (dvi_document->context, (int)dvi_document->base_width * dvi_document->params->hshrink / thumb_width, @@ -362,28 +351,15 @@ dvi_document_document_thumbnails_iface_init (EvDocumentThumbnailsIface *iface) } /* EvFileExporterIface */ -static gboolean -dvi_document_file_exporter_format_supported (EvFileExporter *exporter, - EvFileExporterFormat format) -{ - return (format == EV_FILE_FORMAT_PDF); /* only exporting to PDF is implemented. */ -} - static void -dvi_document_file_exporter_begin (EvFileExporter *exporter, - EvFileExporterFormat format, - const char *filename, /* for storing the temp pdf file */ - int first_page, - int last_page, - double width, - double height, - gboolean duplex) +dvi_document_file_exporter_begin (EvFileExporter *exporter, + EvFileExporterContext *fc) { DviDocument *dvi_document = DVI_DOCUMENT(exporter); if (dvi_document->exporter_filename) g_free (dvi_document->exporter_filename); - dvi_document->exporter_filename = g_strdup(filename); + dvi_document->exporter_filename = g_strdup (fc->filename); if (dvi_document->exporter_opts) { g_string_free (dvi_document->exporter_opts, TRUE); @@ -392,11 +368,12 @@ dvi_document_file_exporter_begin (EvFileExporter *exporter, } static void -dvi_document_file_exporter_do_page (EvFileExporter *exporter, EvRenderContext *rc) +dvi_document_file_exporter_do_page (EvFileExporter *exporter, + EvRenderContext *rc) { DviDocument *dvi_document = DVI_DOCUMENT(exporter); - g_string_append_printf(dvi_document->exporter_opts, "%d,", (rc->page)+1); + g_string_append_printf (dvi_document->exporter_opts, "%d,", (rc->page->index) + 1); } static void @@ -409,7 +386,7 @@ dvi_document_file_exporter_end (EvFileExporter *exporter) DviDocument *dvi_document = DVI_DOCUMENT(exporter); - command_line = g_strdup_printf ("dvipdfm %s -o %s %s", /* dvipdfm -s 1,2,.., -o exporter_filename dvi_filename */ + command_line = g_strdup_printf ("dvipdfm %s -o %s \"%s\"", /* dvipdfm -s 1,2,.., -o exporter_filename dvi_filename */ dvi_document->exporter_opts->str, dvi_document->exporter_filename, dvi_document->context->filename); @@ -420,25 +397,35 @@ dvi_document_file_exporter_end (EvFileExporter *exporter) &exit_stat, &err); - g_free(command_line); + g_free (command_line); if (success == FALSE) { - g_warning (_("Error: %s"), err->message); + g_warning ("Error: %s", err->message); } else if (exit_stat != 0) { - g_warning (_("Error: dvipdfm exited with non-zero status.")); + g_warning ("Error: dvipdfm exited with non-zero status."); } if (err) - g_error_free(err); + g_error_free (err); +} + +static EvFileExporterCapabilities +dvi_document_file_exporter_get_capabilities (EvFileExporter *exporter) +{ + return 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_GENERATE_PDF; } static void dvi_document_file_exporter_iface_init (EvFileExporterIface *iface) { - iface->format_supported = dvi_document_file_exporter_format_supported; iface->begin = dvi_document_file_exporter_begin; iface->do_page = dvi_document_file_exporter_do_page; iface->end = dvi_document_file_exporter_end; + iface->get_capabilities = dvi_document_file_exporter_get_capabilities; } #define RGB2ULONG(r,g,b) ((0xFF<<24)|(r<<16)|(g<<8)|(b))