Build an identity matrix for InterpolateMatrix.

We have to build an identity matrix while add_weighted() between
InterpolateMatrix and none transform in some cases, e.g. trigger a
transition from a mid-point of another transition to none.
This commit is contained in:
Boris Chiou 2017-06-23 18:29:55 +08:00
parent 71f1f4b508
commit a67797c485

View file

@ -1621,20 +1621,19 @@ fn build_identity_transform_list(list: &[TransformOperation]) -> Vec<TransformOp
result.push(TransformOperation::Rotate(0.0, 0.0, 1.0, Angle::zero())); result.push(TransformOperation::Rotate(0.0, 0.0, 1.0, Angle::zero()));
} }
TransformOperation::Perspective(..) | TransformOperation::Perspective(..) |
TransformOperation::AccumulateMatrix { .. } => { TransformOperation::AccumulateMatrix { .. } |
TransformOperation::InterpolateMatrix { .. } => {
// Perspective: We convert a perspective function into an equivalent // Perspective: We convert a perspective function into an equivalent
// ComputedMatrix, and then decompose/interpolate/recompose these matrices. // ComputedMatrix, and then decompose/interpolate/recompose these matrices.
// AccumulateMatrix: We do interpolation on AccumulateMatrix by reading it as a // AccumulateMatrix/InterpolateMatrix: We do interpolation on
// ComputedMatrix (with layout information), and then do matrix interpolation. // AccumulateMatrix/InterpolateMatrix by reading it as a ComputedMatrix
// (with layout information), and then do matrix interpolation.
// //
// Therefore, we use an identity matrix to represent the identity transform list. // Therefore, we use an identity matrix to represent the identity transform list.
// http://dev.w3.org/csswg/css-transforms/#identity-transform-function // http://dev.w3.org/csswg/css-transforms/#identity-transform-function
let identity = ComputedMatrix::identity(); let identity = ComputedMatrix::identity();
result.push(TransformOperation::Matrix(identity)); result.push(TransformOperation::Matrix(identity));
} }
TransformOperation::InterpolateMatrix { .. } => {
panic!("Building the identity matrix for InterpolateMatrix is not supported");
}
} }
} }