+ if (_fill && _y1 > 0 && _points.size() > 0) {
+ const ArdourCanvas::Rect& vp (_canvas->visible_area());
+ setup_fill_context (context);
+
+ Duple y (0, _y1);
+ float y1 = item_to_window (y).y;
+ render_path (area, context);
+ Duple c0 (item_to_window (_points.back()));
+ Duple c1 (item_to_window (_points.front()));
+ if (c0.x < vp.x1) {
+ context->line_to (vp.x1, c0.y);
+ context->line_to (vp.x1, y1);
+ } else {
+ context->line_to (vp.x1, y1);
+ }
+ if (c1.x > vp.x0) {
+ context->line_to (vp.x0, y1);
+ context->line_to (vp.x0, c1.y);
+ } else {
+ context->line_to (vp.x0, y1);
+ }
+ context->close_path ();
+ context->fill ();
+ }
+