+ if (get_type() == Duck::TYPE_TANGENT ||
+ get_type() == Duck::TYPE_ANGLE)
+ {
+ Angle old_angle = get_point().angle();
+ set_point((x-get_sub_trans_origin())/get_scalar());
+ Angle change = get_point().angle() - old_angle;
+ while (change < Angle::deg(-180)) change += Angle::deg(360);
+ while (change > Angle::deg(180)) change -= Angle::deg(360);
+ int old_halves = round_to_int(Angle::deg(rotations).get()/180);
+ rotations += change;
+ int new_halves = round_to_int(Angle::deg(rotations).get()/180);
+ if (old_halves != new_halves &&
+ (new_halves > 1 || new_halves < -1 ||
+ old_halves > 1 || old_halves < -1))
+ synfig::info("rotation: %.2f turns", new_halves/2.0);
+ }
+ else
+ set_point((x-get_sub_trans_origin())/get_scalar());