Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2007-11-26 11:38:02 (GMT)
committer Carlos Garcia Campos <carlosgc@src.gnome.org>2007-11-26 11:38:02 (GMT)
commit8954a5e9ac17c50cb01c3fcf2787daf40feb7a04 (patch)
treef88d77602815e200a025d41becf0c759e10f8953
parent742fc1217fa8b01bb2807a5c7eb338b4c64bd03e (diff)
Tiff documents were rendered with wrong colors. Fixes bug #497279.
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=/trunk/; revision=2748
-rw-r--r--ChangeLog6
-rw-r--r--backend/tiff/tiff-document.c18
2 files changed, 24 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index e3a13e4..5fdb4fe 100644
--- 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-25 Carlos Garcia Campos <carlosgc@gnome.org>
* shell/ev-application.[ch]: (get_find_string_from_args),
diff --git a/backend/tiff/tiff-document.c b/backend/tiff/tiff-document.c
index f813c47..34275c1 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,