double fraction;
const_iterator length_check_iter = _events.begin();
- for (npoints = 0; npoints < 4; ++npoints, ++length_check_iter)
- if (length_check_iter == _events.end())
+ for (npoints = 0; npoints < 4; ++npoints, ++length_check_iter) {
+ if (length_check_iter == _events.end()) {
break;
+ }
+ }
switch (npoints) {
case 0:
return _default_value;
case 1:
- if (x >= _events.front()->when) {
- return _events.front()->value;
- } else {
- // hansfbaier: v--------- Why commented ???
- // return _default_value;
- return _events.front()->value;
- }
+ return _events.front()->value;
case 2:
if (x >= _events.back()->when) {
return _events.back()->value;
- } else if (x == _events.front()->when) {
- return _events.front()->value;
- } else if (x < _events.front()->when) {
- // hansfbaier: v--------- Why commented ???
- // return _default_value;
+ } else if (x <= _events.front()->when) {
return _events.front()->value;
}
return lval;
}
- /* linear interpolation betweeen the two points
- */
-
+ /* linear interpolation betweeen the two points */
fraction = (double) (x - lpos) / (double) (upos - lpos);
return lval + (fraction * (uval - lval));
default:
-
if (x >= _events.back()->when) {
return _events.back()->value;
- } else if (x == _events.front()->when) {
- return _events.front()->value;
- } else if (x < _events.front()->when) {
- // hansfbaier: v--------- Why commented ???
- // return _default_value;
+ } else if (x <= _events.front()->when) {
return _events.front()->value;
}
return multipoint_eval (x);
- break;
}
/*NOTREACHED*/ /* stupid gcc */
- return 0.0;
+ return _default_value;
}
double
/** Get the earliest time the line crosses an integer (Linear interpolation).
*
- * In other words: send out multiple events to interpolate the line
- * defined by its control points
* If an event is found, \a x and \a y are set to its coordinates.
*
* \param inclusive Include events with timestamp exactly equal to \a start
/** Move automation around according to a list of region movements */
void
-ControlList::move_ranges (RangeMoveList const & movements)
+ControlList::move_ranges (const list< RangeMove<double> >& movements)
{
+ typedef list< RangeMove<double> > RangeMoveList;
+
{
Glib::Mutex::Lock lm (_lock);
/* copy the events into the new list */
for (RangeMoveList::const_iterator i = movements.begin (); i != movements.end (); ++i) {
iterator j = old_events.begin ();
- EventTime const limit = i->from + i->length;
- EventTime const dx = i->to - i->from;
+ const double limit = i->from + i->length;
+ const double dx = i->to - i->from;
while (j != old_events.end () && (*j)->when <= limit) {
if ((*j)->when >= i->from) {
ControlEvent* ev = new ControlEvent (**j);