frameoffset_t sync_offset (int& dir) const;
framepos_t sync_position () const;
- framepos_t sync_point () const;
framepos_t adjust_to_sync (framepos_t) const;
/* first_frame() is an alias; last_frame() just hides some math */
framepos_t first_frame () const { return _position; }
- framepos_t last_frame () const { return _position + _length; }
+ framepos_t last_frame () const { return _position + _length - 1; }
/** Return the earliest possible value of _position given the
* value of _start within the region's sources
framepos_t latest_possible_frame () const;
Evoral::Range<framepos_t> last_range () const {
- return Evoral::Range<framepos_t> (_last_position, _last_position + _last_length);
+ return Evoral::Range<framepos_t> (_last_position, _last_position + _last_length - 1);
}
-
+
Evoral::Range<framepos_t> range () const {
return Evoral::Range<framepos_t> (first_frame(), last_frame());
}
void set_length (framecnt_t);
void set_start (framepos_t);
void set_position (framepos_t);
+ void set_initial_position (framepos_t);
void special_set_position (framepos_t);
virtual void update_after_tempo_map_change ();
void nudge_position (frameoffset_t);
virtual void set_position_internal (framepos_t pos, bool allow_bbt_recompute);
virtual void set_length_internal (framecnt_t);
virtual void set_start_internal (framecnt_t);
-
+
DataType _type;
PBD::Property<bool> _sync_marked;
PBD::Property<framepos_t> _position;
/** Sync position relative to the start of our file */
PBD::Property<framepos_t> _sync_position;
-
+
SourceList _sources;
/** Used when timefx are applied, so we can always use the original source */
SourceList _master_sources;
AnalysisFeatureList _transients;
-
+
boost::weak_ptr<ARDOUR::Playlist> _playlist;
-
+
private:
void mid_thaw (const PBD::PropertyChange&);