diff options
author | Caleb Michael Moore <cmoore@src.gnome.org> | 2005-10-12 15:14:55 +0000 |
---|---|---|
committer | Caleb Michael Moore <cmoore@src.gnome.org> | 2005-10-12 15:14:55 +0000 |
commit | a00dea214d04889ca8717a85de9dbecb65ea3eac (patch) | |
tree | f4cd155ee1ccedd4a579d0fffa7e891f6505a002 /rsvg-cairo-clip.c | |
parent | 4289af24cf674ad5f4a8cb378ed8558171c7f215 (diff) | |
download | librsvg-a00dea214d04889ca8717a85de9dbecb65ea3eac.tar.gz |
cairo clip path stuff
Diffstat (limited to 'rsvg-cairo-clip.c')
-rw-r--r-- | rsvg-cairo-clip.c | 11 |
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; } |