If the pixbuf has an alpha channel, use gdk_draw_rgb_32_image to draw it
2008-02-07 Christian Persch <chpe@gnome.org> * gdk/gdkpixbuf-render.c: (gdk_pixbuf_render_pixmap_and_mask_for_colormap): If the pixbuf has an alpha channel, use gdk_draw_rgb_32_image to draw it to the pixmap; otherwise there will be random pixel values in the semi-transparent area of the pixbuf within the mask. Bug #487865. svn path=/trunk/; revision=19488
This commit is contained in:
parent
6e03989a4c
commit
08856e5af9
@ -1,3 +1,11 @@
|
|||||||
|
2008-02-07 Christian Persch <chpe@gnome.org>
|
||||||
|
|
||||||
|
* gdk/gdkpixbuf-render.c:
|
||||||
|
(gdk_pixbuf_render_pixmap_and_mask_for_colormap): If the pixbuf has an
|
||||||
|
alpha channel, use gdk_draw_rgb_32_image to draw it to the pixmap;
|
||||||
|
otherwise there will be random pixel values in the semi-transparent
|
||||||
|
area of the pixbuf within the mask. Bug #487865.
|
||||||
|
|
||||||
2008-02-06 Cody Russell <bratsche@gnome.org>
|
2008-02-06 Cody Russell <bratsche@gnome.org>
|
||||||
|
|
||||||
* gdk/win32/gdkevents-win32.c: Check if the window is a temp window,
|
* gdk/win32/gdkevents-win32.c: Check if the window is a temp window,
|
||||||
|
@ -305,11 +305,24 @@ gdk_pixbuf_render_pixmap_and_mask_for_colormap (GdkPixbuf *pixbuf,
|
|||||||
|
|
||||||
gdk_drawable_set_colormap (GDK_DRAWABLE (*pixmap_return), colormap);
|
gdk_drawable_set_colormap (GDK_DRAWABLE (*pixmap_return), colormap);
|
||||||
gc = _gdk_drawable_get_scratch_gc (*pixmap_return, FALSE);
|
gc = _gdk_drawable_get_scratch_gc (*pixmap_return, FALSE);
|
||||||
gdk_draw_pixbuf (*pixmap_return, gc, pixbuf,
|
|
||||||
0, 0, 0, 0,
|
/* If the pixbuf has an alpha channel, using gdk_pixbuf_draw would give
|
||||||
gdk_pixbuf_get_width (pixbuf), gdk_pixbuf_get_height (pixbuf),
|
* random pixel values in the area that are within the mask, but semi-
|
||||||
GDK_RGB_DITHER_NORMAL,
|
* transparent. So we treat the pixbuf like a pixbuf without alpha channel;
|
||||||
0, 0);
|
* see bug #487865.
|
||||||
|
*/
|
||||||
|
if (gdk_pixbuf_get_has_alpha (pixbuf))
|
||||||
|
gdk_draw_rgb_32_image (*pixmap_return, gc,
|
||||||
|
0, 0,
|
||||||
|
gdk_pixbuf_get_width (pixbuf), gdk_pixbuf_get_height (pixbuf),
|
||||||
|
GDK_RGB_DITHER_NORMAL,
|
||||||
|
gdk_pixbuf_get_pixels (pixbuf), gdk_pixbuf_get_rowstride (pixbuf));
|
||||||
|
else
|
||||||
|
gdk_draw_pixbuf (*pixmap_return, gc, pixbuf,
|
||||||
|
0, 0, 0, 0,
|
||||||
|
gdk_pixbuf_get_width (pixbuf), gdk_pixbuf_get_height (pixbuf),
|
||||||
|
GDK_RGB_DITHER_NORMAL,
|
||||||
|
0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mask_return)
|
if (mask_return)
|
||||||
|
Loading…
Reference in New Issue
Block a user