static void
reverse_curve (boost::shared_ptr<Evoral::ControlList> dst, boost::shared_ptr<const Evoral::ControlList> src)
{
- size_t len = src->back()->when;
+ size_t len = src->when(false);
+ // TODO read-lock of src (!)
for (Evoral::ControlList::const_reverse_iterator it = src->rbegin(); it!=src->rend(); it++) {
dst->fast_simple_add (len - (*it)->when, (*it)->value);
}
/* return to default fades if the existing ones are too long */
if (_left_of_split) {
- if (_fade_in->back()->when >= _length) {
+ if (_fade_in->when(false) >= _length) {
set_default_fade_in ();
}
set_default_fade_out ();
}
if (_right_of_split) {
- if (_fade_out->back()->when >= _length) {
+ if (_fade_out->when(false) >= _length) {
set_default_fade_out ();
}
if (_fade_in_active && _session.config.get_use_region_fades()) {
- samplecnt_t fade_in_length = (samplecnt_t) _fade_in->back()->when;
+ samplecnt_t fade_in_length = (samplecnt_t) _fade_in->when(false);
/* see if this read is within the fade in */
*
*/
- fade_interval_start = max (internal_offset, _length - samplecnt_t (_fade_out->back()->when));
+ fade_interval_start = max (internal_offset, _length - samplecnt_t (_fade_out->when(false)));
samplecnt_t fade_interval_end = min(internal_offset + to_read, _length.val());
if (fade_interval_end > fade_interval_start) {
if (fade_out_limit != 0) {
- samplecnt_t const curve_offset = fade_interval_start - (_length - _fade_out->back()->when);
+ samplecnt_t const curve_offset = fade_interval_start - (_length - _fade_out->when(false));
if (is_opaque) {
if (_inverse_fade_out) {
void
AudioRegion::set_fade_in_shape (FadeShape shape)
{
- set_fade_in (shape, (samplecnt_t) _fade_in->back()->when);
+ set_fade_in (shape, (samplecnt_t) _fade_in->when(false));
}
void
AudioRegion::set_fade_out_shape (FadeShape shape)
{
- set_fade_out (shape, (samplecnt_t) _fade_out->back()->when);
+ set_fade_out (shape, (samplecnt_t) _fade_out->when(false));
}
void
bool
AudioRegion::fade_in_is_default () const
{
- return _fade_in->size() == 2 && _fade_in->front()->when == 0 && _fade_in->back()->when == 64;
+ return _fade_in->size() == 2 && _fade_in->when(true) == 0 && _fade_in->when(false) == 64;
}
bool
AudioRegion::fade_out_is_default () const
{
- return _fade_out->size() == 2 && _fade_out->front()->when == 0 && _fade_out->back()->when == 64;
+ return _fade_out->size() == 2 && _fade_out->when(true) == 0 && _fade_out->when(false) == 64;
}
void
if (_left_of_split) {
set_default_fade_out ();
_left_of_split = false;
- } else if (_fade_out->back()->when > _length) {
+ } else if (_fade_out->when(false) > _length) {
_fade_out->extend_to (_length);
send_change (PropertyChange (Properties::fade_out));
}
- if (_fade_in->back()->when > _length) {
+ if (_fade_in->when(false) > _length) {
_fade_in->extend_to (_length);
send_change (PropertyChange (Properties::fade_in));
}
if (_right_of_split) {
set_default_fade_in ();
_right_of_split = false;
- } else if (_fade_in->back()->when > _length) {
+ } else if (_fade_in->when(false) > _length) {
_fade_in->extend_to (_length);
send_change (PropertyChange (Properties::fade_in));
}
- if (_fade_out->back()->when > _length) {
+ if (_fade_out->when(false) > _length) {
_fade_out->extend_to (_length);
send_change (PropertyChange (Properties::fade_out));
}
Evoral::Range<samplepos_t>
AudioRegion::body_range () const
{
- return Evoral::Range<samplepos_t> (first_sample() + _fade_in->back()->when + 1, last_sample() - _fade_out->back()->when);
+ return Evoral::Range<samplepos_t> (first_sample() + _fade_in->when(false) + 1, last_sample() - _fade_out->when(false));
}
boost::shared_ptr<Region>