Tidy.
[ardour.git] / libs / ardour / ardour / playlist.h
index 3f328de00518654d63b1f455b47b15007d18b580..d2920fb6105e9c5059ec15171be69c2665944655 100644 (file)
@@ -35,7 +35,9 @@
 
 #include <pbd/undo.h>
 #include <pbd/stateful.h> 
-#include <pbd/statefuldestructible.h> 
+#include <pbd/statefuldestructible.h>
+
+#include <evoral/types.hpp>
 
 #include <ardour/ardour.h>
 #include <ardour/session_object.h>
@@ -92,10 +94,13 @@ class Playlist : public SessionObject, public boost::enable_shared_from_this<Pla
        void get_region_list_equivalent_regions (boost::shared_ptr<Region>, std::vector<boost::shared_ptr<Region> >&);
        void replace_region (boost::shared_ptr<Region> old, boost::shared_ptr<Region> newr, nframes_t pos);
        void split_region (boost::shared_ptr<Region>, nframes_t position);
+       void split (nframes64_t at);
+       void shift (nframes64_t at, nframes64_t distance, bool move_intersected, bool ignore_music_glue);
        void partition (nframes_t start, nframes_t end, bool just_top_level);
        void duplicate (boost::shared_ptr<Region>, nframes_t position, float times);
        void nudge_after (nframes_t start, nframes_t distance, bool forwards);
        void shuffle (boost::shared_ptr<Region>, int dir);
+       void update_after_tempo_map_change ();
 
        boost::shared_ptr<Playlist> cut  (list<AudioRange>&, bool result_is_hidden = true);
        boost::shared_ptr<Playlist> copy (list<AudioRange>&, bool result_is_hidden = true);
@@ -110,6 +115,8 @@ class Playlist : public SessionObject, public boost::enable_shared_from_this<Pla
        nframes64_t                find_next_region_boundary (nframes64_t frame, int dir);
        bool                       region_is_shuffle_constrained (boost::shared_ptr<Region>);
 
+       nframes64_t find_next_transient (nframes64_t position, int dir);
+
        template<class T> void foreach_region (T *t, void (T::*func)(boost::shared_ptr<Region>, void *), void *arg);
        template<class T> void foreach_region (T *t, void (T::*func)(boost::shared_ptr<Region>));
 
@@ -121,9 +128,9 @@ class Playlist : public SessionObject, public boost::enable_shared_from_this<Pla
        sigc::signal<void>      Modified;
        sigc::signal<void>      NameChanged;
        sigc::signal<void>      LengthChanged;
+       sigc::signal<void, list< Evoral::RangeMove<nframes_t> > const &> RangesMoved;
 
        static string bump_name (string old_name, Session&);
-       static string bump_name_once (string old_name);
 
        void freeze ();
        void thaw ();
@@ -173,6 +180,7 @@ class Playlist : public SessionObject, public boost::enable_shared_from_this<Pla
 
        RegionList       regions;  /* the current list of regions in the playlist */
        std::set<boost::shared_ptr<Region> > all_regions; /* all regions ever added to this playlist */
+       std::list<sigc::connection> region_state_changed_connections;
        DataType        _type;
        mutable gint    block_notifications;
        mutable gint    ignore_state_changes;
@@ -182,6 +190,7 @@ class Playlist : public SessionObject, public boost::enable_shared_from_this<Pla
        RegionList       pending_bounds;
        bool             pending_modified;
        bool             pending_length;
+       list< Evoral::RangeMove<nframes_t> > pending_range_moves;
        bool             save_on_thaw;
        string           last_save_reason;
        uint32_t         in_set_state;
@@ -223,6 +232,7 @@ class Playlist : public SessionObject, public boost::enable_shared_from_this<Pla
        void notify_layering_changed ();
        void notify_modified ();
        void notify_state_changed (Change);
+       void notify_region_moved (boost::shared_ptr<Region>);
 
        void mark_session_dirty();
 
@@ -251,7 +261,7 @@ class Playlist : public SessionObject, public boost::enable_shared_from_this<Pla
 
        boost::shared_ptr<Region> region_by_id (PBD::ID);
 
-       void add_region_internal (boost::shared_ptr<Region>, nframes_t position);
+       bool add_region_internal (boost::shared_ptr<Region>, nframes_t position);
        
        int remove_region_internal (boost::shared_ptr<Region>);
        RegionList *find_regions_at (nframes_t frame);
@@ -272,6 +282,8 @@ class Playlist : public SessionObject, public boost::enable_shared_from_this<Pla
        void unset_freeze_child (Playlist*);
 
        void timestamp_layer_op (boost::shared_ptr<Region>);
+
+       void _split_region (boost::shared_ptr<Region>, nframes_t position);
 };
 
 } /* namespace ARDOUR */