20 #ifndef __ardour_location_h__
21 #define __ardour_location_h__
28 #include <sys/types.h>
30 #include <glibmm/threads.h>
54 IsSessionRange = 0x40,
67 bool locked()
const {
return _locked; }
75 int set_start (
framepos_t s,
bool force =
false,
bool allow_bbt_recompute =
true);
76 int set_end (
framepos_t e,
bool force =
false,
bool allow_bbt_recompute =
true);
81 const std::string&
name()
const {
return _name; }
82 void set_name (
const std::string &str);
84 void set_auto_punch (
bool yn,
void *src);
85 void set_auto_loop (
bool yn,
void *src);
86 void set_hidden (
bool yn,
void *src);
87 void set_cd (
bool yn,
void *src);
88 void set_is_range_marker (
bool yn,
void* src);
89 void set_skip (
bool yn);
90 void set_skipping (
bool yn);
94 bool is_mark ()
const {
return _flags & IsMark; }
95 bool is_hidden ()
const {
return _flags & IsHidden; }
99 bool is_skip()
const {
return _flags & IsSkip; }
100 bool is_skipping()
const {
return (_flags & IsSkip) && (_flags & IsSkipping); }
137 XMLNode& cd_info_node (
const std::string &,
const std::string &);
140 int set_state (
const XMLNode&,
int version);
144 void recompute_frames_from_bbt ();
159 void set_mark (
bool yn);
160 bool set_flag_internal (
bool yn,
Flags flag);
161 void recompute_bbt_from_frames ();
172 const LocationList&
list() {
return locations; }
174 void add (
Location *,
bool make_current =
false);
177 void clear_markers ();
178 void clear_ranges ();
181 int set_state (
const XMLNode&,
int version);
184 Location* auto_loop_location ()
const;
185 Location* auto_punch_location ()
const;
186 Location* session_range_location()
const;
188 int next_available_name(std::string& result,std::string base);
189 uint32_t num_range_markers()
const;
191 int set_current (
Location *,
bool want_lock =
true);
213 template<
class T>
void apply (T& obj,
void (T::*method)(
const LocationList&))
const {
229 mutable Glib::Threads::Mutex
lock;
231 int set_current_unlocked (
Location *);
static PBD::Signal1< void, Location * > start_changed
Location * current_location
static PBD::Signal0< void > scene_changed
PBD::Signal1< void, Location * > current_changed
static PBD::Signal1< void, Location * > end_changed
std::list< Location * > LocationList
PBD::Signal1< void, Location * > added
boost::shared_ptr< SceneChange > _scene_change
bool matches(Flags f) const
PBD::Signal0< void > LockChanged
PositionLockStyle _position_lock_style
static PBD::Signal1< void, Location * > changed
Timecode::BBT_Time _bbt_end
static PBD::Signal1< void, Location * > position_lock_style_changed
bool is_cd_marker() const
LIBARDOUR_API PBD::PropertyDescriptor< framepos_t > start
bool is_session_range() const
boost::shared_ptr< SceneChange > scene_change() const
Location * current() const
PositionLockStyle position_lock_style() const
Timecode::BBT_Time _bbt_start
PBD::Signal0< void > PositionLockStyleChanged
std::map< std::string, std::string > cd_info
bool is_auto_punch() const
PBD::Signal1< void, Location * > removed
PBD::Signal0< void > FlagsChanged
const LocationList & list()
PBD::Signal0< void > NameChanged
const std::string & name() const
static PBD::Signal1< void, Location * > flags_changed
bool operator==(const RouteProcessorSelection &a, const RouteProcessorSelection &b)
framecnt_t length() const
PBD::Signal0< void > EndChanged
static PBD::Signal1< void, Location * > lock_changed
PBD::Signal0< void > StartChanged
bool is_range_marker() const
static PBD::Signal1< void, Location * > name_changed
bool is_auto_loop() const
Glib::Threads::Mutex lock
void apply(T &obj, void(T::*method)(const LocationList &)) const
PBD::Signal0< void > changed
PBD::Signal0< void > Changed