Show discrete/toggled automation as stepped line.
[ardour.git] / libs / canvas / poly_line.cc
index 60bca6bccf87011de9afbc28f6a12d679d49184f..3150907db6f17aec5fec9f16e362444bac54ff99 100644 (file)
@@ -47,6 +47,30 @@ PolyLine::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) cons
        }
 }
 
+void
+PolyLine::set_steps (Points const & points, bool stepped)
+{
+       if (!stepped) {
+               PolyItem::set(points);
+               return;
+       }
+
+       Points copy;
+       for (Points::const_iterator p = points.begin(); p != points.end();) {
+               Points::const_iterator next = p;
+               ++next;
+
+               copy.push_back(*p);
+               if (next != points.end() && next->x != p->x) {
+                       copy.push_back(Duple(next->x, p->y));
+               }
+
+               p = next;
+       }
+
+       PolyItem::set(copy);
+}
+
 bool
 PolyLine::covers (Duple const & point) const
 {