]> www.fi.muni.cz Git - evince.git/blobdiff - backend/dvi/cairo-device.c
[docs] Grammar fixes
[evince.git] / backend / dvi / cairo-device.c
index 95f3e63ae8abaa55cbb4fa3bb34166fd02e51614..bf46cfc3a22b92189bc7e08c11e179d788d95941 100644 (file)
@@ -18,7 +18,8 @@
 
 #include <config.h>
 
-#include <gdk/gdkcolor.h>
+#include <stdlib.h>
+#include <gdk/gdk.h>
 #ifdef HAVE_SPECTRE
 #include <libspectre/spectre.h>
 #endif
@@ -135,8 +136,8 @@ dvi_cairo_draw_ps (DviContext *dvi,
        unsigned char        *data = NULL;
        int                   row_length;
        SpectreDocument      *psdoc;
-       SpectrePage          *page;
        SpectreRenderContext *rc;
+       int                   w, h;
        SpectreStatus         status;
        cairo_surface_t      *image;
 
@@ -148,24 +149,24 @@ dvi_cairo_draw_ps (DviContext *dvi,
                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 ();
-       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) {
+               g_warning ("Error rendering PS document %s: %s\n",
+                          filename, spectre_status_to_string (status));
                free (data);
+               
                return;
        }
 
@@ -244,19 +245,16 @@ dvi_cairo_free_image (void *ptr)
 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;
+       guint32         *p;
 
        surface = (cairo_surface_t *) image;
 
        rowstride = cairo_image_surface_get_stride (surface);
-       p = cairo_image_surface_get_data (surface) + y * rowstride + x * 4;
+       p = (guint32*) (cairo_image_surface_get_data (surface) + y * rowstride + x * 4);
 
-       p[2] = (color >> 16) & 0xff;
-       p[1] = (color >> 8) & 0xff;
-       p[0] = (color >> 0) & 0xff;
+       *p = color;
 }
 
 static void
@@ -319,7 +317,7 @@ mdvi_cairo_device_render (DviContext* dvi)
        gint             page_width;
        gint             page_height;
        cairo_surface_t *surface;
-       gchar           *pixels;
+       guchar          *pixels;
        gint             rowstride;
        static const cairo_user_data_key_t key;
 
@@ -332,7 +330,7 @@ mdvi_cairo_device_render (DviContext* dvi)
        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,