summaryrefslogtreecommitdiff
path: root/gdk/gdkdraw.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2002-01-29 22:46:21 +0000
committerOwen Taylor <otaylor@src.gnome.org>2002-01-29 22:46:21 +0000
commitccb90778612b30b145ca635b91f85e17fd60f3fc (patch)
treef387c4876a9909b43303da5ced3110a32c6433a4 /gdk/gdkdraw.c
parentd3b83098ad34e80dbde2851e23a972903eb18227 (diff)
downloadgdk-pixbuf-ccb90778612b30b145ca635b91f85e17fd60f3fc.tar.gz
Call _gdk_draw_pixbuf(), thus enabling using this function for pixbufs
Tue Jan 29 17:40:02 2002 Owen Taylor <otaylor@redhat.com> * 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.
Diffstat (limited to 'gdk/gdkdraw.c')
-rw-r--r--gdk/gdkdraw.c39
1 files changed, 24 insertions, 15 deletions
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: