X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=backend%2Ftiff%2Ftiff-document.c;h=7f10c9ab7496b6edfdbd0e9244eacce26bdbea34;hb=776a6fe02961d8901d21e172633d3c8d1c85dc93;hp=5501451cd5829a1c5be6765f3ab581cc51c0bbd0;hpb=d37177eb94fcdd9bdaac6aa664d96a01ad9372db;p=evince.git diff --git a/backend/tiff/tiff-document.c b/backend/tiff/tiff-document.c index 5501451c..7f10c9ab 100644 --- a/backend/tiff/tiff-document.c +++ b/backend/tiff/tiff-document.c @@ -260,10 +260,10 @@ tiff_document_render (EvDocument *document, rowstride = cairo_format_stride_for_width (CAIRO_FORMAT_RGB24, width); #else rowstride = width * 4; +#endif if (rowstride / 4 != width) - /* overflow */ + /* overflow, or cairo was changed in an unsupported way */ return NULL; -#endif bytes = height * rowstride; if (bytes / rowstride != height) @@ -292,16 +292,15 @@ tiff_document_render (EvDocument *document, */ 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; + guint32 *pixel = (guint32*)p; + guint8 r = TIFFGetR(*pixel); + guint8 g = TIFFGetG(*pixel); + guint8 b = TIFFGetB(*pixel); + guint8 a = TIFFGetA(*pixel); + + *pixel = (a << 24) | (r << 16) | (g << 8) | b; + + p += 4; } rotated_surface = ev_document_misc_surface_rotate_and_scale (surface,