From d7e3637af2ce31c35281c87c4ca064322de0d948 Mon Sep 17 00:00:00 2001 From: Andrea Canciani Date: Sat, 1 Jan 2011 23:16:11 +0100 Subject: [PATCH] quartz: Cleanup extents computation All the draw operations use the same code to compute the gradient parameter range. It can be moved to the function which sets up the source. --- src/cairo-quartz-surface.c | 45 +++++++++++++------------------------- 1 file changed, 15 insertions(+), 30 deletions(-) diff --git a/src/cairo-quartz-surface.c b/src/cairo-quartz-surface.c index 5f84c65ce..f2fdb63da 100644 --- a/src/cairo-quartz-surface.c +++ b/src/cairo-quartz-surface.c @@ -1206,8 +1206,7 @@ static cairo_int_status_t _cairo_quartz_setup_source (cairo_quartz_drawing_state_t *state, cairo_quartz_surface_t *surface, cairo_operator_t op, - const cairo_pattern_t *source, - const cairo_rectangle_int_t *extents) + const cairo_pattern_t *source) { cairo_status_t status; @@ -1249,7 +1248,14 @@ _cairo_quartz_setup_source (cairo_quartz_drawing_state_t *state, source->type == CAIRO_PATTERN_TYPE_RADIAL) { const cairo_gradient_pattern_t *gpat = (const cairo_gradient_pattern_t *)source; - return _cairo_quartz_setup_gradient_source (state, gpat, extents); + cairo_rectangle_int_t extents; + + extents = surface->virtual_extents; + extents.x -= surface->base.device_transform.x0; + extents.y -= surface->base.device_transform.y0; + _cairo_rectangle_union (&extents, &surface->extents); + + return _cairo_quartz_setup_gradient_source (state, gpat, &extents); } if (source->type == CAIRO_PATTERN_TYPE_SURFACE && @@ -1374,12 +1380,11 @@ static cairo_int_status_t _cairo_quartz_setup_source_safe (cairo_quartz_drawing_state_t *state, cairo_quartz_surface_t *surface, cairo_operator_t op, - const cairo_pattern_t *source, - const cairo_rectangle_int_t *extents) + const cairo_pattern_t *source) { cairo_int_status_t status; - status = _cairo_quartz_setup_source (state, surface, op, source, extents); + status = _cairo_quartz_setup_source (state, surface, op, source); if (unlikely (status)) _cairo_quartz_teardown_source (state, surface); @@ -1757,7 +1762,6 @@ _cairo_quartz_surface_paint_cg (cairo_quartz_surface_t *surface, { cairo_quartz_drawing_state_t state; cairo_int_status_t rv = CAIRO_STATUS_SUCCESS; - cairo_rectangle_int_t extents; ND ((stderr, "%p _cairo_quartz_surface_paint op %d source->type %d\n", surface, op, source->type)); @@ -1768,11 +1772,7 @@ _cairo_quartz_surface_paint_cg (cairo_quartz_surface_t *surface, if (unlikely (rv)) return rv; - extents = surface->virtual_extents; - extents.x -= surface->base.device_transform.x0; - extents.y -= surface->base.device_transform.y0; - _cairo_rectangle_union (&extents, &surface->extents); - rv = _cairo_quartz_setup_source_safe (&state, surface, op, source, &extents); + rv = _cairo_quartz_setup_source_safe (&state, surface, op, source); if (unlikely (rv)) return rv; @@ -1831,7 +1831,6 @@ _cairo_quartz_surface_fill_cg (cairo_quartz_surface_t *surface, cairo_quartz_drawing_state_t state; cairo_int_status_t rv = CAIRO_STATUS_SUCCESS; CGPathRef path_for_unbounded = NULL; - cairo_rectangle_int_t extents; ND ((stderr, "%p _cairo_quartz_surface_fill op %d source->type %d\n", surface, op, source->type)); @@ -1842,11 +1841,7 @@ _cairo_quartz_surface_fill_cg (cairo_quartz_surface_t *surface, if (unlikely (rv)) return rv; - extents = surface->virtual_extents; - extents.x -= surface->base.device_transform.x0; - extents.y -= surface->base.device_transform.y0; - _cairo_rectangle_union (&extents, &surface->extents); - rv = _cairo_quartz_setup_source_safe (&state, surface, op, source, &extents); + rv = _cairo_quartz_setup_source_safe (&state, surface, op, source); if (unlikely (rv)) return rv; @@ -1940,7 +1935,6 @@ _cairo_quartz_surface_stroke_cg (cairo_quartz_surface_t *surface, cairo_int_status_t rv = CAIRO_STATUS_SUCCESS; CGAffineTransform origCTM, strokeTransform; CGPathRef path_for_unbounded = NULL; - cairo_rectangle_int_t extents; ND ((stderr, "%p _cairo_quartz_surface_stroke op %d source->type %d\n", surface, op, source->type)); @@ -1984,11 +1978,7 @@ _cairo_quartz_surface_stroke_cg (cairo_quartz_surface_t *surface, } else CGContextSetLineDash (surface->cgContext, 0, NULL, 0); - extents = surface->virtual_extents; - extents.x -= surface->base.device_transform.x0; - extents.y -= surface->base.device_transform.y0; - _cairo_rectangle_union (&extents, &surface->extents); - rv = _cairo_quartz_setup_source_safe (&state, surface, op, source, &extents); + rv = _cairo_quartz_setup_source_safe (&state, surface, op, source); if (unlikely (rv)) return rv; @@ -2091,7 +2081,6 @@ _cairo_quartz_surface_show_glyphs_cg (cairo_quartz_surface_t *surface, COMPILE_TIME_ASSERT (sizeof (CGGlyph) <= sizeof (CGSize)); cairo_quartz_drawing_state_t state; - cairo_rectangle_int_t extents; cairo_int_status_t rv = CAIRO_STATUS_SUCCESS; cairo_quartz_float_t xprev, yprev; int i; @@ -2113,11 +2102,7 @@ _cairo_quartz_surface_show_glyphs_cg (cairo_quartz_surface_t *surface, if (unlikely (rv)) return rv; - extents = surface->virtual_extents; - extents.x -= surface->base.device_transform.x0; - extents.y -= surface->base.device_transform.y0; - _cairo_rectangle_union (&extents, &surface->extents); - rv = _cairo_quartz_setup_source_safe (&state, surface, op, source, &extents); + rv = _cairo_quartz_setup_source_safe (&state, surface, op, source); if (unlikely (rv)) return rv;