X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fplaylist.h;h=04615acb26d0874c7c7d6b818adf376cf7b28902;hb=9eaced4c9d2db5e080e5fa5228616917ccac211c;hp=bb211dbe58526c9d38532b86339b7899e53f1d6d;hpb=ad017365f7a73f8ba57f667cc1aa36478b48c50e;p=ardour.git diff --git a/libs/ardour/ardour/playlist.h b/libs/ardour/ardour/playlist.h index bb211dbe58..04615acb26 100644 --- a/libs/ardour/ardour/playlist.h +++ b/libs/ardour/ardour/playlist.h @@ -38,7 +38,7 @@ #include "pbd/sequence_property.h" #include "pbd/stacktrace.h" -#include "evoral/types.hpp" +#include "evoral/Range.hpp" #include "ardour/ardour.h" #include "ardour/region.h" @@ -128,18 +128,21 @@ public: /* Editing operations */ - void add_region (boost::shared_ptr, framepos_t position, float times = 1, bool auto_partition = false); + void add_region (boost::shared_ptr, framepos_t position, float times = 1, bool auto_partition = false, const int32_t sub_num = 0); void remove_region (boost::shared_ptr); - void remove_region_by_source (boost::shared_ptr); void get_equivalent_regions (boost::shared_ptr, std::vector >&); void get_region_list_equivalent_regions (boost::shared_ptr, std::vector >&); void get_source_equivalent_regions (boost::shared_ptr, std::vector >&); void replace_region (boost::shared_ptr old, boost::shared_ptr newr, framepos_t pos); - void split_region (boost::shared_ptr, framepos_t position); - void split (framepos_t at); + void split_region (boost::shared_ptr, framepos_t position, const int32_t sub_num); + void split (framepos_t at, const int32_t sub_num); void shift (framepos_t at, frameoffset_t distance, bool move_intersected, bool ignore_music_glue); void partition (framepos_t start, framepos_t end, bool cut = false); void duplicate (boost::shared_ptr, framepos_t position, float times); + void duplicate (boost::shared_ptr, framepos_t position, framecnt_t gap, float times); + void duplicate_until (boost::shared_ptr, framepos_t position, framecnt_t gap, framepos_t end); + void duplicate_range (AudioRange&, float times); + void duplicate_ranges (std::list&, float times); void nudge_after (framepos_t start, framecnt_t distance, bool forwards); boost::shared_ptr combine (const RegionList&); void uncombine (boost::shared_ptr); @@ -158,9 +161,10 @@ public: boost::shared_ptr cut (std::list&, bool result_is_hidden = true); boost::shared_ptr copy (std::list&, bool result_is_hidden = true); - int paste (boost::shared_ptr, framepos_t position, float times); + int paste (boost::shared_ptr, framepos_t position, float times, const int32_t sub_num); - const RegionListProperty& region_list () const { return regions; } + const RegionListProperty& region_list_property () const { return regions; } + boost::shared_ptr region_list(); boost::shared_ptr regions_at (framepos_t frame); uint32_t count_regions_at (framepos_t) const; @@ -176,7 +180,8 @@ public: bool region_is_shuffle_constrained (boost::shared_ptr); bool has_region_at (framepos_t const) const; - bool uses_source (boost::shared_ptr src) const; + bool uses_source (boost::shared_ptr src, bool shallow = false) const; + void deep_sources (std::set >&) const; framepos_t find_next_transient (framepos_t position, int dir); @@ -236,7 +241,7 @@ public: void set_layer (boost::shared_ptr, double); void set_capture_insertion_in_progress (bool yn); - + protected: friend class Session; @@ -249,7 +254,7 @@ public: class RegionWriteLock : public Glib::Threads::RWLock::WriterLock { public: - RegionWriteLock (Playlist *pl, bool do_block_notify = true) + RegionWriteLock (Playlist *pl, bool do_block_notify = true) : Glib::Threads::RWLock::WriterLock (pl->region_lock) , playlist (pl) , block_notify (do_block_notify) { @@ -357,7 +362,7 @@ public: virtual XMLNode& state (bool); - bool add_region_internal (boost::shared_ptr, framepos_t position); + bool add_region_internal (boost::shared_ptr, framepos_t position, const int32_t sub_num = 0); int remove_region_internal (boost::shared_ptr); void copy_regions (RegionList&) const; @@ -375,7 +380,7 @@ public: void begin_undo (); void end_undo (); - void _split_region (boost::shared_ptr, framepos_t position); + void _split_region (boost::shared_ptr, framepos_t position, const int32_t sub_num); typedef std::pair, boost::shared_ptr > TwoRegions;