From 8954a5e9ac17c50cb01c3fcf2787daf40feb7a04 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 26 Nov 2007 11:38:02 +0000 Subject: [PATCH] Tiff documents were rendered with wrong colors. Fixes bug #497279. 2007-11-26 Matthias Clasen * backend/tiff/tiff-document.c: (tiff_document_render): Tiff documents were rendered with wrong colors. Fixes bug #497279. svn path=/trunk/; revision=2748 --- ChangeLog | 6 ++++++ backend/tiff/tiff-document.c | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/ChangeLog b/ChangeLog index e3a13e4b..5fdb4fe2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-11-26 Matthias Clasen + + * backend/tiff/tiff-document.c: (tiff_document_render): + + Tiff documents were rendered with wrong colors. Fixes bug #497279. + 2007-11-25 Carlos Garcia Campos * shell/ev-application.[ch]: (get_find_string_from_args), diff --git a/backend/tiff/tiff-document.c b/backend/tiff/tiff-document.c index f813c474..34275c13 100644 --- a/backend/tiff/tiff-document.c +++ b/backend/tiff/tiff-document.c @@ -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, -- 2.43.5