X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=inline;f=backend%2Ftiff%2Ftiff-document.c;h=34275c13d3886ba92b0000f27a360734362fa243;hb=c1d81dab9d3476011fbc619b59f834b1e47bfb1e;hp=c6f4db2b76bde686c78d463af0bfb55b35de7047;hpb=a953c6011f2fba7441758469118a886a33458e50;p=evince.git diff --git a/backend/tiff/tiff-document.c b/backend/tiff/tiff-document.c index c6f4db2b..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, @@ -373,12 +391,6 @@ tiff_document_class_init (TiffDocumentClass *klass) gobject_class->finalize = tiff_document_finalize; } -static gboolean -tiff_document_can_get_text (EvDocument *document) -{ - return FALSE; -} - static EvDocumentInfo * tiff_document_get_info (EvDocument *document) { @@ -395,7 +407,6 @@ tiff_document_document_iface_init (EvDocumentIface *iface) { iface->load = tiff_document_load; iface->save = tiff_document_save; - iface->can_get_text = tiff_document_can_get_text; iface->get_n_pages = tiff_document_get_n_pages; iface->get_page_size = tiff_document_get_page_size; iface->render = tiff_document_render;