From: Carlos Garcia Campos Date: Thu, 23 Aug 2007 22:34:31 +0000 (+0000) Subject: Use CAIRO_FORMAT_RGB24 instead of CAIRO_FORMAT_ARGB32 when creating page X-Git-Tag: EVINCE_2_19_4~9 X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=commitdiff_plain;h=a953c6011f2fba7441758469118a886a33458e50;p=evince.git Use CAIRO_FORMAT_RGB24 instead of CAIRO_FORMAT_ARGB32 when creating page 2007-08-24 Carlos Garcia Campos * backend/djvu/djvu-document.c: (djvu_document_render): * backend/tiff/tiff-document.c: (tiff_document_render): * backend/pdf/ev-poppler.cc: (pdf_document_render): * libdocument/ev-document-misc.c: (ev_document_misc_surface_from_pixbuf), (ev_document_misc_surface_rotate_and_scale): Use CAIRO_FORMAT_RGB24 instead of CAIRO_FORMAT_ARGB32 when creating page surfaces. Fixes bug #453123. Thank you very much to Jeff Muizelaar . svn path=/trunk/; revision=2637 --- diff --git a/ChangeLog b/ChangeLog index b860ab53..789cb0e0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2007-08-24 Carlos Garcia Campos + + * backend/djvu/djvu-document.c: (djvu_document_render): + * backend/tiff/tiff-document.c: (tiff_document_render): + * backend/pdf/ev-poppler.cc: (pdf_document_render): + * libdocument/ev-document-misc.c: + (ev_document_misc_surface_from_pixbuf), + (ev_document_misc_surface_rotate_and_scale): + + Use CAIRO_FORMAT_RGB24 instead of CAIRO_FORMAT_ARGB32 when + creating page surfaces. Fixes bug #453123. Thank you very much to + Jeff Muizelaar . + 2007-08-17 Carlos Garcia Campos * shell/ev-page-cache.c: (ev_page_cache_new), diff --git a/backend/djvu/djvu-document.c b/backend/djvu/djvu-document.c index 046228dc..4a7aecc0 100644 --- a/backend/djvu/djvu-document.c +++ b/backend/djvu/djvu-document.c @@ -260,7 +260,7 @@ djvu_document_render (EvDocument *document, rowstride = page_width * 4; pixels = (gchar *) g_malloc (page_height * rowstride); surface = cairo_image_surface_create_for_data (pixels, - CAIRO_FORMAT_ARGB32, + CAIRO_FORMAT_RGB24, page_width, page_height, rowstride); diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc index 38a01fd4..8af07fd4 100644 --- a/backend/pdf/ev-poppler.cc +++ b/backend/pdf/ev-poppler.cc @@ -500,7 +500,7 @@ pdf_document_render (EvDocument *document, #ifdef HAVE_POPPLER_PAGE_RENDER cairo_t *cr; - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, + surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, width, height); memset (cairo_image_surface_get_data (surface), 0xff, cairo_image_surface_get_height (surface) * diff --git a/backend/tiff/tiff-document.c b/backend/tiff/tiff-document.c index 59748d72..c6f4db2b 100644 --- a/backend/tiff/tiff-document.c +++ b/backend/tiff/tiff-document.c @@ -259,7 +259,7 @@ tiff_document_render (EvDocument *document, return NULL; surface = cairo_image_surface_create_for_data (pixels, - CAIRO_FORMAT_ARGB32, + CAIRO_FORMAT_RGB24, width, height, rowstride); cairo_surface_set_user_data (surface, &key, diff --git a/libdocument/ev-document-misc.c b/libdocument/ev-document-misc.c index 3dc4babe..3e85c7dd 100644 --- a/libdocument/ev-document-misc.c +++ b/libdocument/ev-document-misc.c @@ -152,7 +152,7 @@ ev_document_misc_surface_from_pixbuf (GdkPixbuf *pixbuf) cairo_surface_t *surface; cairo_t *cr; - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, + surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, gdk_pixbuf_get_width (pixbuf), gdk_pixbuf_get_height (pixbuf)); cr = cairo_create (surface); @@ -239,6 +239,8 @@ ev_document_misc_surface_rotate_and_scale (cairo_surface_t *surface, cairo_surface_t *new_surface; cairo_t *cr; gint width, height; + gboolean has_alpha; + cairo_format_t surface_format; gint new_width = dest_width; gint new_height = dest_height; @@ -256,8 +258,13 @@ ev_document_misc_surface_rotate_and_scale (cairo_surface_t *surface, new_height = dest_width; } + surface_format = cairo_image_surface_get_format (surface); + has_alpha = (surface_format == CAIRO_FORMAT_ARGB32); + new_surface = cairo_surface_create_similar (surface, - CAIRO_CONTENT_COLOR_ALPHA, + has_alpha ? + CAIRO_CONTENT_COLOR_ALPHA : + CAIRO_CONTENT_COLOR, new_width, new_height); cr = cairo_create (new_surface);