// curve_mode is ignored, no recalculations
}
+// exactly equals
+int FloatAuto::equals(FloatAuto *that)
+{
+ return this->value == that->value &&
+ this->control_in_value == that->control_in_value &&
+ this->control_out_value == that->control_out_value &&
+ this->control_in_position == that->control_in_position &&
+ this->control_out_position == that->control_out_position &&
+ this->curve_mode == that->curve_mode;
+}
+
+
/* Note: the following is essentially display-code and has been moved to:
* TrackCanvas::value_to_percentage(float auto_value, int autogrouptype)
*
// set this->value using bézier interpolation if possible
FloatAuto *left = (FloatAuto*)a1;
FloatAuto *right = (FloatAuto*)a2;
- float new_value = FloatAutos::calculate_bezier(left, right, pos);
+ if( pos != position ) { // this may trigger smoothing
+ this->adjust_to_new_coordinates(pos,
+ FloatAutos::calculate_bezier(left, right, pos));
+ }
float new_slope = FloatAutos::calculate_bezier_derivation(left, right, pos);
- this->adjust_to_new_coordinates(pos, new_value); // this may trigger smoothing
this->set_control_in_value(new_slope * control_in_position);
this->set_control_out_value(new_slope * control_out_position);
return 1; //return true: interpolated indeed...