X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=libdocument%2Fev-document-misc.c;h=889e4a88d0a08e51e1d3c2b92530ea1469bbb3df;hb=16cc05ec4f7663103e45a52ac06d292e6b75a8c0;hp=3dc4babef53a14198acedf20422c1586f5f4a4ba;hpb=4ce480dd80453275c10c3b99f988667c2f1bdfff;p=evince.git diff --git a/libdocument/ev-document-misc.c b/libdocument/ev-document-misc.c index 3dc4babe..889e4a88 100644 --- a/libdocument/ev-document-misc.c +++ b/libdocument/ev-document-misc.c @@ -17,10 +17,14 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include "ev-document-misc.h" +#include + #include + #include +#include "ev-document-misc.h" + /* Returns a new GdkPixbuf that is suitable for placing in the thumbnail view. * It is four pixels wider and taller than the source. If source_pixbuf is not * NULL, then it will fill the return pixbuf with the contents of @@ -151,8 +155,9 @@ 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 (gdk_pixbuf_get_has_alpha (pixbuf) ? + CAIRO_FORMAT_ARGB32 : CAIRO_FORMAT_RGB24, gdk_pixbuf_get_width (pixbuf), gdk_pixbuf_get_height (pixbuf)); cr = cairo_create (surface); @@ -218,10 +223,10 @@ ev_document_misc_pixbuf_from_surface (cairo_surface_t *surface) p[3] = (has_alpha) ? p[3] : 0xff; #else tmp = p[0]; - p[0] = (has_alpha) ? p[3] : 0xff; - p[3] = p[2]; - p[2] = p[1]; - p[1] = tmp; + p[0] = p[1]; + p[1] = p[2]; + p[2] = p[3]; + p[3] = (has_alpha) ? tmp : 0xff; #endif p += pixbuf_n_channels; } @@ -257,7 +262,7 @@ ev_document_misc_surface_rotate_and_scale (cairo_surface_t *surface, } new_surface = cairo_surface_create_similar (surface, - CAIRO_CONTENT_COLOR_ALPHA, + cairo_surface_get_content (surface), new_width, new_height); cr = cairo_create (new_surface);