add API to fetch all regionviews after a given position

This commit is contained in:
Paul Davis 2021-06-20 16:50:45 -06:00
parent a1ef870866
commit 12b536d8f2
7 changed files with 33 additions and 0 deletions

View File

@ -268,6 +268,8 @@ public:
bool get_selection_extents (samplepos_t &start, samplepos_t &end) const; // the time extents of the current selection, whether Range, Region(s), Control Points, or Notes
Selection& get_cut_buffer() const { return *cut_buffer; }
void get_regionviews_at_or_after (ARDOUR::samplepos_t, RegionSelection&);
void set_selection (std::list<Selectable*>, Selection::Operation);
void set_selected_midi_region_view (MidiRegionView&);

View File

@ -2257,6 +2257,14 @@ Editor::select_all_selectables_between (bool within)
commit_reversible_selection_op ();
}
void
Editor::get_regionviews_at_or_after (samplepos_t pos, RegionSelection& regions)
{
for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
(*iter)->get_regionviews_at_or_after (pos, regions);
}
}
void
Editor::select_range_between ()
{

View File

@ -1170,6 +1170,16 @@ RouteTimeAxisView::get_inverted_selectables (Selection& sel, list<Selectable*>&
StripableTimeAxisView::get_inverted_selectables (sel, results);
}
void
RouteTimeAxisView::get_regionviews_at_or_after (samplepos_t pos, RegionSelection& regions)
{
if (!_view) {
return;
}
_view->get_regionviews_at_or_after (pos, regions);
}
RouteGroup*
RouteTimeAxisView::route_group () const
{

View File

@ -102,6 +102,7 @@ public:
void set_selected_regionviews (RegionSelection&);
void get_selectables (ARDOUR::samplepos_t start, ARDOUR::samplepos_t end, double top, double bot, std::list<Selectable *>&, bool within = false);
void get_inverted_selectables (Selection&, std::list<Selectable*>&);
void get_regionviews_at_or_after (ARDOUR::samplepos_t, RegionSelection&);
void set_layer_display (LayerDisplay d);
void toggle_layer_display ();
LayerDisplay layer_display () const;

View File

@ -601,6 +601,16 @@ StreamView::get_inverted_selectables (Selection& sel, list<Selectable*>& results
}
}
void
StreamView::get_regionviews_at_or_after (samplepos_t pos, RegionSelection& regions)
{
for (list<RegionView*>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
if ((*i)->region()->position() >= pos) {
regions.push_back (*i);
}
}
}
/** @return height of a child region view, depending on stacked / overlaid mode */
double
StreamView::child_height () const

View File

@ -106,6 +106,7 @@ public:
void set_selected_regionviews (RegionSelection&);
void get_selectables (ARDOUR::samplepos_t, ARDOUR::samplepos_t, double, double, std::list<Selectable* >&, bool within = false);
void get_inverted_selectables (Selection&, std::list<Selectable* >& results);
void get_regionviews_at_or_after (ARDOUR::samplepos_t, RegionSelection&);
virtual void update_contents_metrics(boost::shared_ptr<ARDOUR::Region>) {}

View File

@ -212,6 +212,7 @@ public:
virtual void get_selectables (ARDOUR::samplepos_t, ARDOUR::samplepos_t, double, double, std::list<Selectable*>&, bool within = false);
virtual void get_inverted_selectables (Selection&, std::list<Selectable *>& results);
virtual void get_regionviews_at_or_after (ARDOUR::samplepos_t, RegionSelection&) {}
void add_ghost (RegionView*);
void remove_ghost (RegionView*);