summaryrefslogtreecommitdiff
path: root/rsvg-cairo-clip.c
diff options
context:
space:
mode:
authorCaleb Michael Moore <cmoore@src.gnome.org>2005-10-12 15:14:55 +0000
committerCaleb Michael Moore <cmoore@src.gnome.org>2005-10-12 15:14:55 +0000
commita00dea214d04889ca8717a85de9dbecb65ea3eac (patch)
treef4cd155ee1ccedd4a579d0fffa7e891f6505a002 /rsvg-cairo-clip.c
parent4289af24cf674ad5f4a8cb378ed8558171c7f215 (diff)
downloadlibrsvg-a00dea214d04889ca8717a85de9dbecb65ea3eac.tar.gz
cairo clip path stuff
Diffstat (limited to 'rsvg-cairo-clip.c')
-rw-r--r--rsvg-cairo-clip.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/rsvg-cairo-clip.c b/rsvg-cairo-clip.c
index 5c6d47db..71d84dc1 100644
--- a/rsvg-cairo-clip.c
+++ b/rsvg-cairo-clip.c
@@ -71,6 +71,11 @@ rsvg_cairo_clip_render_path (RsvgDrawingCtx *ctx, const RsvgBpathDef *bpath_def)
_set_rsvg_affine (cr, state->affine);
+ if (rsvg_state_current(ctx)->clip_rule == FILL_RULE_EVENODD)
+ cairo_set_fill_rule (((RsvgCairoRender *)ctx->render)->cr, CAIRO_FILL_RULE_EVEN_ODD);
+ else /* state->fill_rule == FILL_RULE_NONZERO */
+ cairo_set_fill_rule (((RsvgCairoRender *)ctx->render)->cr, CAIRO_FILL_RULE_WINDING);
+
for (i=0; i < bpath_def->n_bpath; i++) {
bpath = &bpath_def->bpath[i];
@@ -176,11 +181,7 @@ rsvg_cairo_clip (RsvgDrawingCtx *ctx, RsvgClipPath *clip, RsvgCairoBbox *bbox)
for (i = 0; i < 6; i++)
clip->super.state->affine[i] = affinesave[i];
-
- if (rsvg_state_current (ctx)->fill_rule == FILL_RULE_EVENODD)
- cairo_set_fill_rule (save->cr, CAIRO_FILL_RULE_EVEN_ODD);
- else /* state->fill_rule == FILL_RULE_NONZERO */
- cairo_set_fill_rule (save->cr, CAIRO_FILL_RULE_WINDING);
+ g_free(ctx->render);
cairo_clip(save->cr);
ctx->render = &save->super;
}