mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
style: Return an infinite perspective in TransformOperation::Perspective::to_animated_zero
Differential Revision: https://phabricator.services.mozilla.com/D122919
This commit is contained in:
parent
26c5db6a6e
commit
79893116e7
3 changed files with 11 additions and 7 deletions
|
@ -1112,8 +1112,12 @@ impl Animate for ComputedTransformOperation {
|
|||
|
||||
let decomposed = decompose_3d_matrix(interpolated)?;
|
||||
let perspective_z = decomposed.perspective.2;
|
||||
let used_value = if perspective_z == 0. {
|
||||
0.
|
||||
// Clamp results outside of the -1 to 0 range so that we get perspective
|
||||
// function values between 1 and infinity.
|
||||
let used_value = if perspective_z >= 0. {
|
||||
std::f32::INFINITY
|
||||
} else if perspective_z <= -1. {
|
||||
1.
|
||||
} else {
|
||||
-1. / perspective_z
|
||||
};
|
||||
|
|
|
@ -516,8 +516,8 @@ impl ToAnimatedZero for TransformOperation {
|
|||
generic::TransformOperation::Rotate(_) => {
|
||||
Ok(generic::TransformOperation::Rotate(Angle::zero()))
|
||||
},
|
||||
generic::TransformOperation::Perspective(ref l) => Ok(
|
||||
generic::TransformOperation::Perspective(l.to_animated_zero()?),
|
||||
generic::TransformOperation::Perspective(_) => Ok(
|
||||
generic::TransformOperation::Perspective(Length::new(std::f32::INFINITY))
|
||||
),
|
||||
generic::TransformOperation::AccumulateMatrix { .. } |
|
||||
generic::TransformOperation::InterpolateMatrix { .. } => {
|
||||
|
|
|
@ -583,10 +583,10 @@ impl<T: ToMatrix> Transform<T> {
|
|||
/// Return the transform matrix from a perspective length.
|
||||
#[inline]
|
||||
pub fn create_perspective_matrix(d: CSSFloat) -> Transform3D<CSSFloat> {
|
||||
if d < 0.0 {
|
||||
Transform3D::identity()
|
||||
} else {
|
||||
if d.is_finite() {
|
||||
Transform3D::perspective(d.max(1.))
|
||||
} else {
|
||||
Transform3D::identity()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue