mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
style: Interpolate the angle between mis-matched rotate() functions when the angle of one is zero.
Bug: 1501176 Reviewed-by: hiro
This commit is contained in:
parent
edf6e6a54f
commit
8bc8a0bfa0
1 changed files with 13 additions and 2 deletions
|
@ -2351,10 +2351,21 @@ impl Animate for ComputedRotate {
|
|||
let from = ComputedRotate::resolve(self);
|
||||
let to = ComputedRotate::resolve(other);
|
||||
|
||||
let (fx, fy, fz, fa) =
|
||||
let (mut fx, mut fy, mut fz, fa) =
|
||||
transform::get_normalized_vector_and_angle(from.0, from.1, from.2, from.3);
|
||||
let (tx, ty, tz, ta) =
|
||||
let (mut tx, mut ty, mut tz, ta) =
|
||||
transform::get_normalized_vector_and_angle(to.0, to.1, to.2, to.3);
|
||||
|
||||
if fa == Angle::from_degrees(0.) {
|
||||
fx = tx;
|
||||
fy = ty;
|
||||
fz = tz;
|
||||
} else if ta == Angle::from_degrees(0.) {
|
||||
tx = fx;
|
||||
ty = fy;
|
||||
tz = fz;
|
||||
}
|
||||
|
||||
if (fx, fy, fz) == (tx, ty, tz) {
|
||||
return Ok(Rotate::Rotate3D(fx, fy, fz, fa.animate(&ta, procedure)?));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue