diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2009-08-11 15:36:11 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2009-08-29 08:08:33 +0100 |
commit | 30e5fa0ce06b2572f09f3d47ee10b692f18ba0ae (patch) | |
tree | 6ad69675b51a8b19df9a8e3e82ba51d748d5c02d | |
parent | 3fcac1ef21de9526bc1abca902db5755abe463ae (diff) |
[polygon] Return status from path ops
This tidies the common case which was to call, for example,
_cairo_polygon_line_to(); _cairo_polygon_status();
-rw-r--r-- | src/cairo-path-fill.c | 26 | ||||
-rw-r--r-- | src/cairo-polygon.c | 18 | ||||
-rw-r--r-- | src/cairoint.h | 6 |
3 files changed, 19 insertions, 31 deletions
diff --git a/src/cairo-path-fill.c b/src/cairo-path-fill.c index d46917d5..f9679443 100644 --- a/src/cairo-path-fill.c +++ b/src/cairo-path-fill.c @@ -40,7 +40,6 @@ typedef struct cairo_filler { double tolerance; - cairo_point_t current_point; cairo_polygon_t *polygon; } cairo_filler_t; @@ -51,9 +50,6 @@ _cairo_filler_init (cairo_filler_t *filler, { filler->tolerance = tolerance; filler->polygon = polygon; - - filler->current_point.x = 0; - filler->current_point.y = 0; } static void @@ -69,11 +65,7 @@ _cairo_filler_move_to (void *closure, cairo_polygon_t *polygon = filler->polygon; _cairo_polygon_close (polygon); - _cairo_polygon_move_to (polygon, point); - - filler->current_point = *point; - - return _cairo_polygon_status (filler->polygon); + return _cairo_polygon_move_to (polygon, point); } static cairo_status_t @@ -81,13 +73,7 @@ _cairo_filler_line_to (void *closure, const cairo_point_t *point) { cairo_filler_t *filler = closure; - cairo_polygon_t *polygon = filler->polygon; - - _cairo_polygon_line_to (polygon, point); - - filler->current_point = *point; - - return _cairo_polygon_status (filler->polygon); + return _cairo_polygon_line_to (filler->polygon, point); } static cairo_status_t @@ -101,7 +87,7 @@ _cairo_filler_curve_to (void *closure, if (! _cairo_spline_init (&spline, _cairo_filler_line_to, filler, - &filler->current_point, b, c, d)) + &filler->polygon->current_point, b, c, d)) { return _cairo_filler_line_to (closure, d); } @@ -113,11 +99,7 @@ static cairo_status_t _cairo_filler_close_path (void *closure) { cairo_filler_t *filler = closure; - cairo_polygon_t *polygon = filler->polygon; - - _cairo_polygon_close (polygon); - - return _cairo_polygon_status (polygon); + return _cairo_polygon_close (filler->polygon); } cairo_status_t diff --git a/src/cairo-polygon.c b/src/cairo-polygon.c index 9de92bfa..f3e8e4d2 100644 --- a/src/cairo-polygon.c +++ b/src/cairo-polygon.c @@ -386,12 +386,12 @@ _cairo_polygon_add_line (cairo_polygon_t *polygon, } else _add_edge (polygon, &line->p1, &line->p2, top, bottom, dir); - return _cairo_polygon_status (polygon); + return polygon->status; } /* flattened path operations */ -void +cairo_status_t _cairo_polygon_move_to (cairo_polygon_t *polygon, const cairo_point_t *point) { @@ -408,9 +408,10 @@ _cairo_polygon_move_to (cairo_polygon_t *polygon, } polygon->current_point = *point; + return polygon->status; } -void +cairo_status_t _cairo_polygon_line_to (cairo_polygon_t *polygon, const cairo_point_t *point) { @@ -424,7 +425,7 @@ _cairo_polygon_line_to (cairo_polygon_t *polygon, _cairo_slope_init (&this, &polygon->current_point, point); if (_cairo_slope_equal (&polygon->current_edge, &this)) { polygon->current_point = *point; - return; + return CAIRO_STATUS_SUCCESS; } _cairo_polygon_add_edge (polygon, @@ -450,13 +451,16 @@ _cairo_polygon_line_to (cairo_polygon_t *polygon, } polygon->current_point = *point; + return polygon->status; } -void +cairo_status_t _cairo_polygon_close (cairo_polygon_t *polygon) { + cairo_status_t status; + if (polygon->has_current_point) { - _cairo_polygon_line_to (polygon, &polygon->first_point); + status = _cairo_polygon_line_to (polygon, &polygon->first_point); polygon->has_current_point = FALSE; } @@ -466,4 +470,6 @@ _cairo_polygon_close (cairo_polygon_t *polygon) &polygon->current_point); polygon->has_current_edge = FALSE; } + + return polygon->status; } diff --git a/src/cairoint.h b/src/cairoint.h index 9fd789da..2afb6904 100644 --- a/src/cairoint.h +++ b/src/cairoint.h @@ -2267,15 +2267,15 @@ _cairo_polygon_add_external_edge (void *polygon, const cairo_point_t *p1, const cairo_point_t *p2); -cairo_private void +cairo_private cairo_status_t _cairo_polygon_move_to (cairo_polygon_t *polygon, const cairo_point_t *point); -cairo_private void +cairo_private cairo_status_t _cairo_polygon_line_to (cairo_polygon_t *polygon, const cairo_point_t *point); -cairo_private void +cairo_private cairo_status_t _cairo_polygon_close (cairo_polygon_t *polygon); #define _cairo_polygon_status(P) ((cairo_polygon_t *) (P))->status |