]> www.fi.muni.cz Git - evince.git/blobdiff - backend/dvi/cairo-device.c
Fix several compile warnings in the dvi backend.
[evince.git] / backend / dvi / cairo-device.c
index 95f3e63ae8abaa55cbb4fa3bb34166fd02e51614..992728dc4c4b49b012b8a2278840f876d864c5f9 100644 (file)
@@ -18,6 +18,7 @@
 
 #include <config.h>
 
 
 #include <config.h>
 
+#include <stdlib.h>
 #include <gdk/gdkcolor.h>
 #ifdef HAVE_SPECTRE
 #include <libspectre/spectre.h>
 #include <gdk/gdkcolor.h>
 #ifdef HAVE_SPECTRE
 #include <libspectre/spectre.h>
@@ -135,8 +136,8 @@ dvi_cairo_draw_ps (DviContext *dvi,
        unsigned char        *data = NULL;
        int                   row_length;
        SpectreDocument      *psdoc;
        unsigned char        *data = NULL;
        int                   row_length;
        SpectreDocument      *psdoc;
-       SpectrePage          *page;
        SpectreRenderContext *rc;
        SpectreRenderContext *rc;
+       int                   w, h;
        SpectreStatus         status;
        cairo_surface_t      *image;
 
        SpectreStatus         status;
        cairo_surface_t      *image;
 
@@ -148,24 +149,24 @@ dvi_cairo_draw_ps (DviContext *dvi,
                spectre_document_free (psdoc);
                return;
        }
                spectre_document_free (psdoc);
                return;
        }
-       
-       page = spectre_document_get_page (psdoc, 0);
-       if (!page) {
-               spectre_document_free (psdoc);
-               return;
-       }
+
+       spectre_document_get_page_size (psdoc, &w, &h);
 
        rc = spectre_render_context_new ();
 
        rc = spectre_render_context_new ();
-       spectre_render_context_set_page_size (rc, width, height);
-       spectre_page_render (page, rc, &data, &row_length);
-       status = spectre_page_status (page);
-       spectre_render_context_free (rc);
+       spectre_render_context_set_scale (rc,
+                                         (double)width / w,
+                                         (double)height / h);
+       spectre_document_render_full (psdoc, rc, &data, &row_length);   
+       status = spectre_document_status (psdoc);
 
 
-       spectre_page_free (page);
+       spectre_render_context_free (rc);
        spectre_document_free (psdoc);
 
        if (status) {
        spectre_document_free (psdoc);
 
        if (status) {
+               g_warning ("Error rendering PS document %s: %s\n",
+                          filename, spectre_status_to_string (status));
                free (data);
                free (data);
+               
                return;
        }
 
                return;
        }
 
@@ -244,7 +245,6 @@ dvi_cairo_free_image (void *ptr)
 static void
 dvi_cairo_put_pixel (void *image, int x, int y, Ulong color)
 {
 static void
 dvi_cairo_put_pixel (void *image, int x, int y, Ulong color)
 {
-       cairo_t         *cr;
        cairo_surface_t *surface;
        gint             rowstride;
        guchar          *p;
        cairo_surface_t *surface;
        gint             rowstride;
        guchar          *p;
@@ -319,7 +319,7 @@ mdvi_cairo_device_render (DviContext* dvi)
        gint             page_width;
        gint             page_height;
        cairo_surface_t *surface;
        gint             page_width;
        gint             page_height;
        cairo_surface_t *surface;
-       gchar           *pixels;
+       guchar          *pixels;
        gint             rowstride;
        static const cairo_user_data_key_t key;
 
        gint             rowstride;
        static const cairo_user_data_key_t key;
 
@@ -332,7 +332,7 @@ mdvi_cairo_device_render (DviContext* dvi)
        page_height = dvi->dvi_page_h * dvi->params.vconv + 2 * cairo_device->ymargin;
 
        rowstride = page_width * 4;
        page_height = dvi->dvi_page_h * dvi->params.vconv + 2 * cairo_device->ymargin;
 
        rowstride = page_width * 4;
-       pixels = (gchar *) g_malloc (page_height * rowstride);
+       pixels = (guchar *) g_malloc (page_height * rowstride);
        memset (pixels, 0xff, page_height * rowstride);
 
        surface = cairo_image_surface_create_for_data (pixels,
        memset (pixels, 0xff, page_height * rowstride);
 
        surface = cairo_image_surface_create_for_data (pixels,