diff options
author | Owen Taylor <otaylor@redhat.com> | 2005-02-03 23:29:02 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2005-02-03 23:29:02 +0000 |
commit | 93344f6dfee0d21e5e9aa750b5a91ed10980cd24 (patch) | |
tree | 71978aa4f489edd13c2d71b55344921f0fdaab5b /gdk/gdkwindow.c | |
parent | 8a5d05e253490a5851b7e142f4090971153c1178 (diff) | |
download | gtk+-93344f6dfee0d21e5e9aa750b5a91ed10980cd24.tar.gz |
Add gdk_drawable_set_cairo_target().
2005-02-03 Owen Taylor <otaylor@redhat.com>
* gdk/gdkdrawable.[ch] gdkpixmap.c gdkwindow.c: Add
gdk_drawable_set_cairo_target().
* tests/testtreeflow.c (enum): Use grand not rand as a variable
name because one of the cairo headers is pulling in stdlib.h.
* tests/testcairo.c tests/Makefile.am: Add a simple cairo based
example.
* configure.in: Bump release to 2.7.0, gtk_binary_version to 2.7.0.
* Require libpangocairo for all backends.
Diffstat (limited to 'gdk/gdkwindow.c')
-rw-r--r-- | gdk/gdkwindow.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 41e5e2ab97..4a27988c67 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -157,6 +157,9 @@ static GdkImage* gdk_window_copy_to_image (GdkDrawable *drawable, gint width, gint height); +static void gdk_window_set_cairo_target (GdkDrawable *drawable, + cairo_t *cr); + static void gdk_window_real_get_size (GdkDrawable *drawable, gint *width, gint *height); @@ -263,6 +266,7 @@ gdk_window_class_init (GdkWindowObjectClass *klass) drawable_class->get_colormap = gdk_window_real_get_colormap; drawable_class->get_visual = gdk_window_real_get_visual; drawable_class->_copy_to_image = gdk_window_copy_to_image; + drawable_class->set_cairo_target = gdk_window_set_cairo_target; drawable_class->get_clip_region = gdk_window_get_clip_region; drawable_class->get_visible_region = gdk_window_get_visible_region; drawable_class->get_composite_drawable = gdk_window_get_composite_drawable; @@ -2091,6 +2095,26 @@ gdk_window_copy_to_image (GdkDrawable *drawable, width, height); } +static void +gdk_window_set_cairo_target (GdkDrawable *drawable, + cairo_t *cr) +{ + GdkWindowObject *private = (GdkWindowObject*) drawable; + gint x_offset, y_offset; + + gdk_window_get_offsets (GDK_WINDOW (drawable), &x_offset, &y_offset); + + if (private->paint_stack) + { + GdkWindowPaint *paint = private->paint_stack->data; + gdk_drawable_set_cairo_target (paint->pixmap, cr); + } + else + gdk_drawable_set_cairo_target (private->impl, cr); + + cairo_translate (cr, - x_offset, - y_offset); +} + /* Code for dirty-region queueing */ static GSList *update_windows = NULL; |