Skip to content
Permalink
Browse files

style: Interpolate the angle between mis-matched rotate() functions w…

…hen the angle of one is zero.

Bug: 1501176
Reviewed-by: hiro
  • Loading branch information
birtles authored and emilio committed Nov 5, 2018
1 parent edf6e6a commit 8bc8a0bfa01679ea8505f7734bc05360fb491504
Showing with 13 additions and 2 deletions.
  1. +13 −2 components/style/properties/helpers/animated_properties.mako.rs
@@ -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)?));
}

0 comments on commit 8bc8a0b

Please sign in to comment.
You can’t perform that action at this time.