From ccb90778612b30b145ca635b91f85e17fd60f3fc Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Tue, 29 Jan 2002 22:46:21 +0000 Subject: Call _gdk_draw_pixbuf(), thus enabling using this function for pixbufs Tue Jan 29 17:40:02 2002 Owen Taylor * gdk/gdkpixbuf-render.c (gdk_pixbuf_render_to_drawable): Call _gdk_draw_pixbuf(), thus enabling using this function for pixbufs with alpha. (#68801) * gdk/gdkdraw.c (gdk_drawable_real_draw_pixbuf): Move implementation of gdk_pixbuf_render_to_drawable() to here. --- gdk/gdkdraw.c | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) (limited to 'gdk/gdkdraw.c') diff --git a/gdk/gdkdraw.c b/gdk/gdkdraw.c index cc1299e37..9778c879d 100644 --- a/gdk/gdkdraw.c +++ b/gdk/gdkdraw.c @@ -1289,23 +1289,32 @@ gdk_drawable_real_draw_pixbuf (GdkDrawable *drawable, if (composited) { - gdk_pixbuf_render_to_drawable (composited, - drawable, gc, - 0, 0, - dest_x, dest_y, - width, height, - dither, - x_dither, y_dither); + src_x = 0; + src_y = 0; + pixbuf = composited; } - else + + if (pixbuf->n_channels == 4) + { + guchar *buf = pixbuf->pixels + src_y * pixbuf->rowstride + src_x * 4; + + gdk_draw_rgb_32_image_dithalign (drawable, gc, + dest_x, dest_y, + width, height, + dither, + buf, pixbuf->rowstride, + x_dither, y_dither); + } + else /* n_channels == 3 */ { - gdk_pixbuf_render_to_drawable (pixbuf, - drawable, gc, - src_x, src_y, - dest_x, dest_y, - width, height, - dither, - x_dither, y_dither); + guchar *buf = pixbuf->pixels + src_y * pixbuf->rowstride + src_x * 3; + + gdk_draw_rgb_image_dithalign (drawable, gc, + dest_x, dest_y, + width, height, + dither, + buf, pixbuf->rowstride, + x_dither, y_dither); } out: -- cgit v1.2.1