diff options
author | Colin Fletcher <colin.m.fletcher@googlemail.com> | 2018-09-13 14:05:47 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2018-09-13 14:05:47 -0400 |
commit | 9321f46c453b3df226f0abc8ced6415e1d3e842d (patch) | |
tree | f906186ba378d6bae64a43f994e1659bd45ba478 /libs/ardour/playlist.cc | |
parent | 556cf7a21520c4b1bda14bce96ecc9919a946c9d (diff) |
Implement new Enclosed region equivalence mode
Diffstat (limited to 'libs/ardour/playlist.cc')
-rw-r--r-- | libs/ardour/playlist.cc | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc index c3b91f3f45..c992c10579 100644 --- a/libs/ardour/playlist.cc +++ b/libs/ardour/playlist.cc @@ -839,18 +839,28 @@ Playlist::remove_region_internal (boost::shared_ptr<Region> region) void Playlist::get_equivalent_regions (boost::shared_ptr<Region> other, vector<boost::shared_ptr<Region> >& results) { - if (Config->get_use_overlap_equivalency()) { - for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) { - if ((*i)->overlap_equivalent (other)) { - results.push_back (*i); - } - } - } else { - for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) { - if ((*i)->equivalent (other)) { - results.push_back (*i); - } - } + switch (Config->get_region_equivalence()) { + case Exact: + for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) { + if ((*i)->exact_equivalent (other)) { + results.push_back (*i); + } + } + break; + case Enclosed: + for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) { + if ((*i)->enclosed_equivalent (other)) { + results.push_back (*i); + } + } + break; + case Overlap: + for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) { + if ((*i)->overlap_equivalent (other)) { + results.push_back (*i); + } + } + break; } } |