#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>
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);
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>));
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 ();
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;
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;
void notify_layering_changed ();
void notify_modified ();
void notify_state_changed (Change);
+ void notify_region_moved (boost::shared_ptr<Region>);
void mark_session_dirty();
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);
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 */