summaryrefslogtreecommitdiff
path: root/gdk/gdkwindow.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2005-02-03 23:29:02 +0000
committerOwen Taylor <otaylor@src.gnome.org>2005-02-03 23:29:02 +0000
commit93344f6dfee0d21e5e9aa750b5a91ed10980cd24 (patch)
tree71978aa4f489edd13c2d71b55344921f0fdaab5b /gdk/gdkwindow.c
parent8a5d05e253490a5851b7e142f4090971153c1178 (diff)
downloadgtk+-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.c24
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;