X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=sidebyside;f=backend%2Fdvi%2Fdvi-document.c;h=c5f5f79224d71d95e5ac9a65f55c87b9b32ee22a;hb=df7ffac1abb2328b91bb87306f6e77807cc4e10d;hp=1e82fb3127511aa8604a2154f45a32c09e553151;hpb=1af6600934d1f723e5b492b8322e52a1144fb0af;p=evince.git diff --git a/backend/dvi/dvi-document.c b/backend/dvi/dvi-document.c index 1e82fb31..c5f5f792 100644 --- a/backend/dvi/dvi-document.c +++ b/backend/dvi/dvi-document.c @@ -19,17 +19,19 @@ #include "config.h" -#include #include "dvi-document.h" #include "ev-document-thumbnails.h" #include "ev-document-misc.h" #include "ev-file-exporter.h" +#include "ev-file-helpers.h" #include "mdvi.h" #include "fonts.h" +#include "color.h" #include "cairo-device.h" #include +#include GMutex *dvi_context_mutex = NULL; @@ -67,18 +69,14 @@ 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); 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); + EV_BACKEND_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_THUMBNAILS, dvi_document_document_thumbnails_iface_init); + EV_BACKEND_IMPLEMENT_INTERFACE (EV_TYPE_FILE_EXPORTER, dvi_document_file_exporter_iface_init); }); static gboolean @@ -102,9 +100,10 @@ dvi_document_load (EvDocument *document, g_mutex_lock (dvi_context_mutex); if (dvi_document->context) mdvi_destroy_context (dvi_document->context); - + dvi_document->context = mdvi_init_context(dvi_document->params, dvi_document->spec, filename); g_mutex_unlock (dvi_context_mutex); + g_free (filename); if (!dvi_document->context) { g_set_error (error, @@ -150,7 +149,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 +176,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, @@ -274,8 +273,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; @@ -307,7 +306,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, @@ -363,7 +362,7 @@ dvi_document_file_exporter_begin (EvFileExporter *exporter, if (dvi_document->exporter_filename) g_free (dvi_document->exporter_filename); - dvi_document->exporter_filename = g_strdup(fc->filename); + dvi_document->exporter_filename = g_strdup (fc->filename); if (dvi_document->exporter_opts) { g_string_free (dvi_document->exporter_opts, TRUE); @@ -377,7 +376,7 @@ dvi_document_file_exporter_do_page (EvFileExporter *exporter, { 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 @@ -390,7 +389,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); @@ -401,7 +400,7 @@ 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); @@ -410,7 +409,7 @@ dvi_document_file_exporter_end (EvFileExporter *exporter) } if (err) - g_error_free(err); + g_error_free (err); } static EvFileExporterCapabilities