diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-02-09 22:08:41 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2012-02-09 22:08:41 +0000 |
commit | 3443ad903d2ccff7d63a9116df7629d69d87d673 (patch) | |
tree | fd3cadb2128a33d385ab0028ecd24ee5613456bb /src/cairo-spans-compositor.c | |
parent | 3023ff86d58f97f3b2d3304c337920647bc8a147 (diff) | |
download | cairo-3443ad903d2ccff7d63a9116df7629d69d87d673.tar.gz |
spans: Pass unbounded operations to the spans compositors
Only bail if we need to combine clipping with the spans (either for a
bounded or unbounded operation).
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/cairo-spans-compositor.c')
-rw-r--r-- | src/cairo-spans-compositor.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/src/cairo-spans-compositor.c b/src/cairo-spans-compositor.c index 0abb505e9..f069bcdc5 100644 --- a/src/cairo-spans-compositor.c +++ b/src/cairo-spans-compositor.c @@ -565,16 +565,10 @@ composite_aligned_boxes (const cairo_spans_compositor_t *compositor, } static cairo_bool_t -composite_needs_clip (const cairo_composite_rectangles_t *composit, +composite_needs_clip (const cairo_composite_rectangles_t *composite, const cairo_box_t *extents) { - cairo_bool_t needs_clip; - - needs_clip = ! composit->is_bounded; - if (needs_clip) - needs_clip = ! _cairo_clip_contains_box (composit->clip, extents); - - return needs_clip; + return !_cairo_clip_contains_box (composite->clip, extents); } static cairo_int_status_t @@ -588,11 +582,11 @@ composite_boxes (const cairo_spans_compositor_t *compositor, cairo_int_status_t status; cairo_box_t box; - _cairo_box_from_rectangle (&box, &extents->bounded); + _cairo_box_from_rectangle (&box, &extents->unbounded); if (composite_needs_clip (extents, &box)) return CAIRO_INT_STATUS_UNSUPPORTED; - _cairo_rectangular_scan_converter_init (&converter, &extents->bounded); + _cairo_rectangular_scan_converter_init (&converter, &extents->unbounded); for (chunk = &boxes->chunks; chunk != NULL; chunk = chunk->next) { const cairo_box_t *box = chunk->base; int i; @@ -633,7 +627,7 @@ composite_polygon (const cairo_spans_compositor_t *compositor, polygon, fill_rule, antialias); } else { - const cairo_rectangle_int_t *r = &extents->bounded; + const cairo_rectangle_int_t *r = &extents->unbounded; if (antialias == CAIRO_ANTIALIAS_FAST) { converter = _cairo_tor22_scan_converter_create (r->x, r->y, |