summaryrefslogtreecommitdiffstats
path: root/src/canvas-base.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-12-10 18:34:17 +0000
committerDavid Robillard <d@drobilla.net>2011-12-10 18:34:17 +0000
commit103de1c0a236eaa7cc7a20986d32aa7739c4976c (patch)
treea727381eb9786da92daef8aa54f83c306657a91f /src/canvas-base.c
parenta7a3bce6d878c1150946a99f85bc58fc4fcd6256 (diff)
downloadganv-103de1c0a236eaa7cc7a20986d32aa7739c4976c.tar.gz
ganv-103de1c0a236eaa7cc7a20986d32aa7739c4976c.tar.bz2
ganv-103de1c0a236eaa7cc7a20986d32aa7739c4976c.zip
Make item draw method take a cairo_t instead of GdkDrawable.
git-svn-id: http://svn.drobilla.net/lad/trunk/ganv@3856 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/canvas-base.c')
-rw-r--r--src/canvas-base.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/canvas-base.c b/src/canvas-base.c
index 2cff987..51bd7cb 100644
--- a/src/canvas-base.c
+++ b/src/canvas-base.c
@@ -1264,7 +1264,7 @@ static void ganv_group_realize(GanvItem* item);
static void ganv_group_unrealize(GanvItem* item);
static void ganv_group_map(GanvItem* item);
static void ganv_group_unmap(GanvItem* item);
-static void ganv_group_draw(GanvItem* item, GdkDrawable* drawable,
+static void ganv_group_draw(GanvItem* item, cairo_t* cr,
int x, int y, int width, int height);
static double ganv_group_point(GanvItem* item, double x, double y,
int cx, int cy,
@@ -1555,7 +1555,7 @@ ganv_group_unmap(GanvItem* item)
/* Draw handler for canvas groups */
static void
-ganv_group_draw(GanvItem* item, GdkDrawable* drawable,
+ganv_group_draw(GanvItem* item, cairo_t* cr,
int x, int y, int width, int height)
{
GanvGroup* group;
@@ -1579,7 +1579,7 @@ ganv_group_draw(GanvItem* item, GdkDrawable* drawable,
&& (child->y2 > child->canvas->redraw_y2))) {
if (GANV_ITEM_GET_CLASS(child)->draw) {
(*GANV_ITEM_GET_CLASS(child)->draw)(
- child, drawable, x, y, width, height);
+ child, cr, x, y, width, height);
}
}
}
@@ -2816,13 +2816,17 @@ ganv_canvas_base_paint_rect(GanvCanvasBase* canvas, gint x0, gint y0, gint x1, g
g_signal_emit(G_OBJECT(canvas), canvas_signals[DRAW_BACKGROUND], 0, pixmap,
draw_x1, draw_y1, draw_width, draw_height);
+ cairo_t* cr = gdk_cairo_create(pixmap);
+
if (canvas->root->object.flags & GANV_ITEM_VISIBLE) {
(*GANV_ITEM_GET_CLASS(canvas->root)->draw)(
- canvas->root, pixmap,
+ canvas->root, cr,
draw_x1, draw_y1,
draw_width, draw_height);
}
+ cairo_destroy(cr);
+
/* Copy the pixmap to the window and clean up */
gdk_draw_drawable(canvas->layout.bin_window,