]> www.fi.muni.cz Git - evince.git/commitdiff
Tiff documents were rendered with wrong colors. Fixes bug #497279.
authorMatthias Clasen <mclasen@redhat.com>
Mon, 26 Nov 2007 11:42:50 +0000 (11:42 +0000)
committerCarlos Garcia Campos <carlosgc@src.gnome.org>
Mon, 26 Nov 2007 11:42:50 +0000 (11:42 +0000)
2007-11-26  Matthias Clasen  <mclasen@redhat.com>
* backend/tiff/tiff-document.c: (tiff_document_render):
Tiff documents were rendered with wrong colors. Fixes bug #497279.

svn path=/branches/gnome-2-20/; revision=2749

ChangeLog
backend/tiff/tiff-document.c

index 1c6d16c49992de3dcf44415372e784c2bfeb2478..7da22a889c4e05ffeb9fdd4593d710d6e1f1f976 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-11-26  Matthias Clasen  <mclasen@redhat.com>
+
+       * backend/tiff/tiff-document.c: (tiff_document_render):
+
+       Tiff documents were rendered with wrong colors. Fixes bug #497279.
+       
 2007-11-20  Darren Kenny  <darren.kenny@sun.com>
 
        * shell/ev-jobs.c: (ev_job_print_new):
index f813c47438066f00c6e4d55bd86a8e8d4cda4e7a..34275c13d3886ba92b0000f27a360734362fa243 100644 (file)
@@ -210,6 +210,7 @@ tiff_document_render (EvDocument      *document,
        float x_res, y_res;
        gint rowstride, bytes;
        guchar *pixels = NULL;
+       guchar *p;
        GdkPixbuf *pixbuf;
        GdkPixbuf *scaled_pixbuf;
        GdkPixbuf *rotated_pixbuf;
@@ -271,6 +272,23 @@ tiff_document_render (EvDocument      *document,
                                   ORIENTATION_TOPLEFT, 1);
        pop_handlers ();
 
+       /* Convert the format returned by libtiff to
+       * what cairo expects
+       */
+       p = pixels;
+       while (p < pixels + bytes) {
+               uint32 pixel = *(uint32 *)p;
+               int r = TIFFGetR(pixel);
+               int g = TIFFGetG(pixel);
+               int b = TIFFGetB(pixel);
+               int a = TIFFGetA(pixel);
+               
+               *p++ = b;
+               *p++ = g;
+               *p++ = r;
+               *p++ = a;
+       }
+
        rotated_surface = ev_document_misc_surface_rotate_and_scale (surface,
                                                                     (width * rc->scale) + 0.5,
                                                                     (height * rc->scale * (x_res / y_res)) + 0.5,