diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2009-07-26 09:03:36 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2009-07-27 10:18:25 +0100 |
commit | f3d265559a2f97152ce8f307ea3ce83463083088 (patch) | |
tree | 86d65e07c8786634c423e0aaaa4f4a16ab5a96b2 /src/cairo-spline.c | |
parent | 25858d524d158531a71a2e772551b1e497d9d423 (diff) | |
download | cairo-f3d265559a2f97152ce8f307ea3ce83463083088.tar.gz |
[spline] Treat a straight spline as degenerate.
The fallback for degenerate splines is to treat them as a line-to, so if
the spline is straight, we can just replace it with a simple line-to by
treating as degenerate.
Diffstat (limited to 'src/cairo-spline.c')
-rw-r--r-- | src/cairo-spline.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/cairo-spline.c b/src/cairo-spline.c index 45eedbd6a..8bebcb2a8 100644 --- a/src/cairo-spline.c +++ b/src/cairo-spline.c @@ -43,6 +43,8 @@ _cairo_spline_init (cairo_spline_t *spline, const cairo_point_t *a, const cairo_point_t *b, const cairo_point_t *c, const cairo_point_t *d) { + cairo_slope_t slope; + spline->add_point_func = add_point_func; spline->closure = closure; @@ -67,6 +69,13 @@ _cairo_spline_init (cairo_spline_t *spline, else _cairo_slope_init (&spline->final_slope, &spline->knots.a, &spline->knots.d); + _cairo_slope_init (&slope, &spline->knots.a, &spline->knots.d); + if (_cairo_slope_compare (&slope, &spline->initial_slope) == 0 && + _cairo_slope_compare (&slope, &spline->final_slope) == 0) + { + return FALSE; /* just a straight line... */ + } + return TRUE; } |