~ubuntu-branches/debian/squeeze/librsvg/squeeze

« back to all changes in this revision

Viewing changes to rsvg-cairo-clip.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastian Dröge
  • Date: 2010-05-01 14:23:09 UTC
  • mfrom: (1.1.22 upstream) (25.1.2 sid)
  • Revision ID: james.westby@ubuntu.com-20100501142309-f0otyldu6gyratt9
Tags: 2.26.3-1
New upstream bugfix release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* vim: set sw=4 sts=4: -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 
1
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 
2
/* vim: set sw=4 sts=4 ts=4 expandtab: */
2
3
/*
3
4
   rsvg-shapes.c: Draw shapes with cairo
4
5
 
47
48
static void
48
49
rsvg_cairo_clip_apply_affine (RsvgCairoClipRender *render, const double affine[6])
49
50
{
50
 
        cairo_matrix_t matrix;
51
 
        gboolean nest = render->cr != render->parent->initial_cr;
 
51
    cairo_matrix_t matrix;
 
52
    gboolean nest = render->cr != render->parent->initial_cr;
52
53
 
53
 
        cairo_matrix_init (&matrix,
54
 
                                           affine[0], affine[1],
55
 
                                           affine[2], affine[3],
56
 
                                           affine[4] + (nest ? 0 : render->parent->offset_x),
57
 
                                           affine[5] + (nest ? 0 : render->parent->offset_y));
58
 
        cairo_set_matrix (render->cr, &matrix);
 
54
    cairo_matrix_init (&matrix,
 
55
                       affine[0], affine[1],
 
56
                       affine[2], affine[3],
 
57
                       affine[4] + (nest ? 0 : render->parent->offset_x),
 
58
                       affine[5] + (nest ? 0 : render->parent->offset_y));
 
59
    cairo_set_matrix (render->cr, &matrix);
59
60
}
60
61
 
61
62
static void
62
63
rsvg_cairo_clip_render_path (RsvgDrawingCtx * ctx, const RsvgBpathDef * bpath_def)
63
64
{
64
65
    RsvgCairoClipRender *render = (RsvgCairoClipRender *) ctx->render;
65
 
        RsvgState *state = rsvg_state_current (ctx);
 
66
    RsvgState *state = rsvg_state_current (ctx);
66
67
    cairo_t *cr;
67
68
    RsvgBpath *bpath;
68
69
    int i;
69
70
 
70
71
    cr = render->cr;
71
72
 
72
 
        rsvg_cairo_clip_apply_affine (render, state->affine);
 
73
    rsvg_cairo_clip_apply_affine (render, state->affine);
73
74
 
74
75
    if (rsvg_state_current (ctx)->clip_rule == FILL_RULE_EVENODD)
75
76
        cairo_set_fill_rule (((RsvgCairoRender *) ctx->render)->cr, CAIRO_FILL_RULE_EVEN_ODD);