From c03b6585314d2a972cf14c2f04dfdd760e98b57f Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 27 May 2014 19:28:56 +0200 Subject: Curve: anti-aliasing. use cairo for anti-aliasing, and ignore explicit Catmull-Rom points for that fall on the same x-cordinate. --- libs/canvas/curve.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'libs/canvas/curve.cc') diff --git a/libs/canvas/curve.cc b/libs/canvas/curve.cc index 7a45ca90bf..e5db740d66 100644 --- a/libs/canvas/curve.cc +++ b/libs/canvas/curve.cc @@ -383,9 +383,12 @@ Curve::render (Rect const & area, Cairo::RefPtr context) const /* draw line between samples */ window_space = item_to_window (Duple (samples[left].x, samples[left].y)); context->move_to (window_space.x, window_space.y); + Coord last_x = round(window_space.x); for (uint32_t idx = left + 1; idx < right; ++idx) { window_space = item_to_window (Duple (samples[idx].x, samples[idx].y)); - context->line_to (window_space.x, window_space.y); + if (last_x == round(window_space.x)) continue; + last_x = round(window_space.x); + context->line_to (last_x - .5 , window_space.y); } switch (curve_fill) { -- cgit v1.2.3