diff options
Diffstat (limited to 'gtk2_ardour/time_axis_view.cc')
-rw-r--r-- | gtk2_ardour/time_axis_view.cc | 52 |
1 files changed, 38 insertions, 14 deletions
diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc index cb335882e2..e5205069a3 100644 --- a/gtk2_ardour/time_axis_view.cc +++ b/gtk2_ardour/time_axis_view.cc @@ -183,6 +183,10 @@ TimeAxisView::~TimeAxisView() delete (*i)->end_trim; } + for (list<SimpleLine*>::iterator i = feature_lines.begin(); i != feature_lines.end(); ++i) { + delete (*i); + } + if (selection_group) { delete selection_group; selection_group = 0; @@ -637,6 +641,14 @@ TimeAxisView::set_samples_per_unit (double spu) for (Children::iterator i = children.begin(); i != children.end(); ++i) { (*i)->set_samples_per_unit (spu); } + + AnalysisFeatureList::const_iterator i; + list<ArdourCanvas::SimpleLine*>::iterator l; + + for (i = analysis_features.begin(), l = feature_lines.begin(); i != analysis_features.end() && l != feature_lines.end(); ++i, ++l) { + (*l)->property_x1() = editor.frame_to_pixel (*i); + (*l)->property_x2() = editor.frame_to_pixel (*i); + } } void @@ -1166,35 +1178,47 @@ TimeAxisView::covers_y_position (double y) } void -TimeAxisView::show_temporary_lines (const AnalysisFeatureList& pos) +TimeAxisView::show_feature_lines (const AnalysisFeatureList& pos) { - while (temp_lines.size()< pos.size()) { + analysis_features = pos; + reshow_feature_lines (); +} + + +void +TimeAxisView::hide_feature_lines () +{ + list<ArdourCanvas::SimpleLine*>::iterator l; + + for (l = feature_lines.begin(); l != feature_lines.end(); ++l) { + (*l)->hide(); + } +} + +void +TimeAxisView::reshow_feature_lines () +{ + while (feature_lines.size()< analysis_features.size()) { ArdourCanvas::SimpleLine* l = new ArdourCanvas::SimpleLine (*canvas_display); l->property_color_rgba() = (guint) ARDOUR_UI::config()->canvasvar_ZeroLine.get(); l->property_y1() = 0; l->property_y2() = height; - temp_lines.push_back (l); + feature_lines.push_back (l); } - while (temp_lines.size() > pos.size()) { - ArdourCanvas::SimpleLine *line = temp_lines.back(); - temp_lines.pop_back (); + while (feature_lines.size() > analysis_features.size()) { + ArdourCanvas::SimpleLine *line = feature_lines.back(); + feature_lines.pop_back (); delete line; } AnalysisFeatureList::const_iterator i; list<ArdourCanvas::SimpleLine*>::iterator l; - for (i = pos.begin(), l = temp_lines.begin(); i != pos.end() && l != temp_lines.end(); ++i, ++l) { + for (i = analysis_features.begin(), l = feature_lines.begin(); i != analysis_features.end() && l != feature_lines.end(); ++i, ++l) { (*l)->property_x1() = editor.frame_to_pixel (*i); (*l)->property_x2() = editor.frame_to_pixel (*i); + (*l)->show (); } } -void -TimeAxisView::hide_temporary_lines () -{ - for (list<ArdourCanvas::SimpleLine*>::iterator l = temp_lines.begin(); l != temp_lines.end(); ++l) { - (*l)->hide (); - } -} |