mirror of
https://github.com/servo/servo.git
synced 2025-08-12 00:45:33 +01:00
style: Unship the legacy syntax for -moz-transform.
Intent to unship link: https://groups.google.com/d/msg/mozilla.dev.platform/T3PGm97MPNU/59XUavMlCgAJ Reviewed-by: xidorn Bug: 1438297 MozReview-Commit-ID: 6ybGBasPAWU
This commit is contained in:
parent
a98da8ce93
commit
7473796aba
8 changed files with 51 additions and 242 deletions
|
@ -6,10 +6,9 @@
|
|||
|
||||
use euclid::{Transform3D, Vector3D};
|
||||
use num_traits::Zero;
|
||||
use super::{CSSFloat, Either};
|
||||
use super::CSSFloat;
|
||||
use values::animated::ToAnimatedZero;
|
||||
use values::computed::{Angle, Integer, Length, LengthOrPercentage, Number, Percentage};
|
||||
use values::computed::{LengthOrNumber, LengthOrPercentageOrNumber};
|
||||
use values::generics::transform::{self, Matrix as GenericMatrix, Matrix3D as GenericMatrix3D};
|
||||
use values::generics::transform::{Transform as GenericTransform, TransformOperation as GenericTransformOperation};
|
||||
use values::generics::transform::Rotate as GenericRotate;
|
||||
|
@ -26,9 +25,7 @@ pub type TransformOperation = GenericTransformOperation<
|
|||
Number,
|
||||
Length,
|
||||
Integer,
|
||||
LengthOrNumber,
|
||||
LengthOrPercentage,
|
||||
LengthOrPercentageOrNumber,
|
||||
>;
|
||||
/// A computed CSS `transform`
|
||||
pub type Transform = GenericTransform<TransformOperation>;
|
||||
|
@ -56,12 +53,8 @@ impl TransformOrigin {
|
|||
|
||||
/// computed value of matrix3d()
|
||||
pub type Matrix3D = GenericMatrix3D<Number>;
|
||||
/// computed value of matrix3d() in -moz-transform
|
||||
pub type PrefixedMatrix3D = GenericMatrix3D<Number, LengthOrPercentageOrNumber, LengthOrNumber>;
|
||||
/// computed value of matrix()
|
||||
pub type Matrix = GenericMatrix<Number>;
|
||||
/// computed value of matrix() in -moz-transform
|
||||
pub type PrefixedMatrix = GenericMatrix<Number, LengthOrPercentageOrNumber>;
|
||||
|
||||
// we rustfmt_skip here because we want the matrices to look like
|
||||
// matrices instead of being split across lines
|
||||
|
@ -95,21 +88,6 @@ impl Matrix3D {
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
||||
impl PrefixedMatrix3D {
|
||||
#[inline]
|
||||
/// Get an identity matrix
|
||||
pub fn identity() -> Self {
|
||||
Self {
|
||||
m11: 1.0, m12: 0.0, m13: 0.0, m14: 0.0,
|
||||
m21: 0.0, m22: 1.0, m23: 0.0, m24: 0.0,
|
||||
m31: 0.0, m32: 0.0, m33: 1.0, m34: 0.0,
|
||||
m41: Either::First(0.), m42: Either::First(0.),
|
||||
m43: Either::First(Length::new(0.)), m44: 1.0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
||||
impl Matrix {
|
||||
#[inline]
|
||||
|
@ -136,20 +114,6 @@ impl From<Matrix> for Matrix3D {
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
||||
impl PrefixedMatrix {
|
||||
#[inline]
|
||||
/// Get an identity matrix
|
||||
pub fn identity() -> Self {
|
||||
Self {
|
||||
a: 1., c: 0., /* 0 0 */
|
||||
b: 0., d: 1., /* 0 0 */
|
||||
/* 0 0 1 0 */
|
||||
e: Either::First(0.), f: Either::First(0.), /* 0 1 */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
||||
impl From<Transform3D<CSSFloat>> for Matrix3D {
|
||||
#[inline]
|
||||
|
@ -213,17 +177,7 @@ impl ToAnimatedZero for TransformOperation {
|
|||
fn to_animated_zero(&self) -> Result<Self, ()> {
|
||||
match *self {
|
||||
GenericTransformOperation::Matrix3D(..) => Ok(GenericTransformOperation::Matrix3D(Matrix3D::identity())),
|
||||
GenericTransformOperation::PrefixedMatrix3D(..) => {
|
||||
Ok(GenericTransformOperation::PrefixedMatrix3D(
|
||||
PrefixedMatrix3D::identity(),
|
||||
))
|
||||
},
|
||||
GenericTransformOperation::Matrix(..) => Ok(GenericTransformOperation::Matrix(Matrix::identity())),
|
||||
GenericTransformOperation::PrefixedMatrix(..) => {
|
||||
Ok(GenericTransformOperation::PrefixedMatrix(
|
||||
PrefixedMatrix::identity(),
|
||||
))
|
||||
},
|
||||
GenericTransformOperation::Skew(sx, sy) => {
|
||||
Ok(GenericTransformOperation::Skew(
|
||||
sx.to_animated_zero()?,
|
||||
|
|
|
@ -19,24 +19,24 @@ use values::specified::length::LengthOrPercentage as SpecifiedLengthOrPercentage
|
|||
#[allow(missing_docs)]
|
||||
#[derive(Clone, Copy, Debug, MallocSizeOf, PartialEq, ToComputedValue, ToCss)]
|
||||
#[css(comma, function)]
|
||||
pub struct Matrix<T, U = T> {
|
||||
pub struct Matrix<T> {
|
||||
pub a: T,
|
||||
pub b: T,
|
||||
pub c: T,
|
||||
pub d: T,
|
||||
pub e: U,
|
||||
pub f: U,
|
||||
pub e: T,
|
||||
pub f: T,
|
||||
}
|
||||
|
||||
#[allow(missing_docs)]
|
||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
||||
#[css(comma, function = "matrix3d")]
|
||||
#[derive(Clone, Copy, Debug, MallocSizeOf, PartialEq, ToComputedValue, ToCss)]
|
||||
pub struct Matrix3D<T, U = T, V = T> {
|
||||
pub struct Matrix3D<T> {
|
||||
pub m11: T, pub m12: T, pub m13: T, pub m14: T,
|
||||
pub m21: T, pub m22: T, pub m23: T, pub m24: T,
|
||||
pub m31: T, pub m32: T, pub m33: T, pub m34: T,
|
||||
pub m41: U, pub m42: U, pub m43: V, pub m44: T,
|
||||
pub m41: T, pub m42: T, pub m43: T, pub m44: T,
|
||||
}
|
||||
|
||||
#[cfg_attr(rustfmt, rustfmt_skip)]
|
||||
|
@ -200,17 +200,11 @@ impl TimingKeyword {
|
|||
|
||||
#[derive(Clone, Debug, MallocSizeOf, PartialEq, ToComputedValue, ToCss)]
|
||||
/// A single operation in the list of a `transform` value
|
||||
pub enum TransformOperation<Angle, Number, Length, Integer, LengthOrNumber, LengthOrPercentage, LoPoNumber> {
|
||||
pub enum TransformOperation<Angle, Number, Length, Integer, LengthOrPercentage> {
|
||||
/// Represents a 2D 2x3 matrix.
|
||||
Matrix(Matrix<Number>),
|
||||
/// Represents a 3D 4x4 matrix with percentage and length values.
|
||||
/// For `moz-transform`.
|
||||
PrefixedMatrix(Matrix<Number, LoPoNumber>),
|
||||
/// Represents a 3D 4x4 matrix.
|
||||
Matrix3D(Matrix3D<Number>),
|
||||
/// Represents a 3D 4x4 matrix with percentage and length values.
|
||||
/// For `moz-transform`.
|
||||
PrefixedMatrix3D(Matrix3D<Number, LoPoNumber, LengthOrNumber>),
|
||||
/// A 2D skew.
|
||||
///
|
||||
/// If the second angle is not provided it is assumed zero.
|
||||
|
@ -300,9 +294,7 @@ pub enum TransformOperation<Angle, Number, Length, Integer, LengthOrNumber, Leng
|
|||
Number,
|
||||
Length,
|
||||
Integer,
|
||||
LengthOrNumber,
|
||||
LengthOrPercentage,
|
||||
LoPoNumber,
|
||||
>,
|
||||
>,
|
||||
#[compute(ignore_bound)]
|
||||
|
@ -313,9 +305,7 @@ pub enum TransformOperation<Angle, Number, Length, Integer, LengthOrNumber, Leng
|
|||
Number,
|
||||
Length,
|
||||
Integer,
|
||||
LengthOrNumber,
|
||||
LengthOrPercentage,
|
||||
LoPoNumber,
|
||||
>,
|
||||
>,
|
||||
#[compute(clone)]
|
||||
|
@ -333,9 +323,7 @@ pub enum TransformOperation<Angle, Number, Length, Integer, LengthOrNumber, Leng
|
|||
Number,
|
||||
Length,
|
||||
Integer,
|
||||
LengthOrNumber,
|
||||
LengthOrPercentage,
|
||||
LoPoNumber,
|
||||
>,
|
||||
>,
|
||||
#[compute(ignore_bound)]
|
||||
|
@ -346,9 +334,7 @@ pub enum TransformOperation<Angle, Number, Length, Integer, LengthOrNumber, Leng
|
|||
Number,
|
||||
Length,
|
||||
Integer,
|
||||
LengthOrNumber,
|
||||
LengthOrPercentage,
|
||||
LoPoNumber,
|
||||
>,
|
||||
>,
|
||||
count: Integer,
|
||||
|
@ -360,8 +346,8 @@ pub enum TransformOperation<Angle, Number, Length, Integer, LengthOrNumber, Leng
|
|||
/// A value of the `transform` property
|
||||
pub struct Transform<T>(pub Vec<T>);
|
||||
|
||||
impl<Angle, Number, Length, Integer, LengthOrNumber, LengthOrPercentage, LoPoNumber>
|
||||
TransformOperation<Angle, Number, Length, Integer, LengthOrNumber, LengthOrPercentage, LoPoNumber> {
|
||||
impl<Angle, Number, Length, Integer, LengthOrPercentage>
|
||||
TransformOperation<Angle, Number, Length, Integer, LengthOrPercentage> {
|
||||
/// Check if it is any translate function
|
||||
pub fn is_translate(&self) -> bool {
|
||||
use self::TransformOperation::*;
|
||||
|
@ -450,8 +436,8 @@ pub trait ToMatrix {
|
|||
fn to_3d_matrix(&self, reference_box: Option<&Rect<Au>>) -> Result<Transform3D<f64>, ()>;
|
||||
}
|
||||
|
||||
impl<Angle, Number, Length, Integer, LoN, LoP, LoPoNumber> ToMatrix
|
||||
for TransformOperation<Angle, Number, Length, Integer, LoN, LoP, LoPoNumber>
|
||||
impl<Angle, Number, Length, Integer, LoP> ToMatrix
|
||||
for TransformOperation<Angle, Number, Length, Integer, LoP>
|
||||
where
|
||||
Angle: Copy + AsRef<computed::angle::Angle>,
|
||||
Number: Copy + Into<f32> + Into<f64>,
|
||||
|
@ -464,8 +450,7 @@ where
|
|||
match *self {
|
||||
Translate3D(..) | TranslateZ(..) |
|
||||
Rotate3D(..) | RotateX(..) | RotateY(..) | RotateZ(..) |
|
||||
Scale3D(..) | ScaleZ(..) |
|
||||
Perspective(..) | Matrix3D(..) | PrefixedMatrix3D(..) => true,
|
||||
Scale3D(..) | ScaleZ(..) | Perspective(..) | Matrix3D(..) => true,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
@ -553,10 +538,6 @@ where
|
|||
},
|
||||
Matrix3D(m) => m.into(),
|
||||
Matrix(m) => m.into(),
|
||||
PrefixedMatrix3D(_) | PrefixedMatrix(_) => {
|
||||
unreachable!("-moz-transform` is not implemented in Servo yet, and DOMMatrix \
|
||||
doesn't support this")
|
||||
},
|
||||
InterpolateMatrix { .. } | AccumulateMatrix { .. } => {
|
||||
// TODO: Convert InterpolateMatrix/AccumulateMatrix into a valid Transform3D by
|
||||
// the reference box and do interpolation on these two Transform3D matrices.
|
||||
|
|
|
@ -18,8 +18,7 @@ use values::generics::transform::Rotate as GenericRotate;
|
|||
use values::generics::transform::Scale as GenericScale;
|
||||
use values::generics::transform::TransformOperation as GenericTransformOperation;
|
||||
use values::generics::transform::Translate as GenericTranslate;
|
||||
use values::specified::{self, Angle, Number, Length, Integer};
|
||||
use values::specified::{LengthOrNumber, LengthOrPercentage, LengthOrPercentageOrNumber};
|
||||
use values::specified::{self, Angle, Number, Length, Integer, LengthOrPercentage};
|
||||
use values::specified::position::{Side, X, Y};
|
||||
|
||||
pub use values::generics::transform::TransformStyle;
|
||||
|
@ -30,9 +29,7 @@ pub type TransformOperation = GenericTransformOperation<
|
|||
Number,
|
||||
Length,
|
||||
Integer,
|
||||
LengthOrNumber,
|
||||
LengthOrPercentage,
|
||||
LengthOrPercentageOrNumber,
|
||||
>;
|
||||
|
||||
/// A specified CSS `transform`
|
||||
|
@ -49,7 +46,6 @@ impl Transform {
|
|||
fn parse_internal<'i, 't>(
|
||||
context: &ParserContext,
|
||||
input: &mut Parser<'i, 't>,
|
||||
prefixed: bool,
|
||||
) -> Result<Self, ParseError<'i>> {
|
||||
use style_traits::{Separator, Space};
|
||||
|
||||
|
@ -75,19 +71,11 @@ impl Transform {
|
|||
input.expect_comma()?;
|
||||
let d = Number::parse(context, input)?;
|
||||
input.expect_comma()?;
|
||||
if !prefixed {
|
||||
// Standard matrix parsing.
|
||||
let e = Number::parse(context, input)?;
|
||||
input.expect_comma()?;
|
||||
let f = Number::parse(context, input)?;
|
||||
Ok(GenericTransformOperation::Matrix(Matrix { a, b, c, d, e, f }))
|
||||
} else {
|
||||
// Non-standard prefixed matrix parsing for -moz-transform.
|
||||
let e = LengthOrPercentageOrNumber::parse(context, input)?;
|
||||
input.expect_comma()?;
|
||||
let f = LengthOrPercentageOrNumber::parse(context, input)?;
|
||||
Ok(GenericTransformOperation::PrefixedMatrix(Matrix { a, b, c, d, e, f }))
|
||||
}
|
||||
// Standard matrix parsing.
|
||||
let e = Number::parse(context, input)?;
|
||||
input.expect_comma()?;
|
||||
let f = Number::parse(context, input)?;
|
||||
Ok(GenericTransformOperation::Matrix(Matrix { a, b, c, d, e, f }))
|
||||
},
|
||||
"matrix3d" => {
|
||||
let m11 = Number::parse(context, input)?;
|
||||
|
@ -114,37 +102,20 @@ impl Transform {
|
|||
input.expect_comma()?;
|
||||
let m34 = Number::parse(context, input)?;
|
||||
input.expect_comma()?;
|
||||
if !prefixed {
|
||||
// Standard matrix3d parsing.
|
||||
let m41 = Number::parse(context, input)?;
|
||||
input.expect_comma()?;
|
||||
let m42 = Number::parse(context, input)?;
|
||||
input.expect_comma()?;
|
||||
let m43 = Number::parse(context, input)?;
|
||||
input.expect_comma()?;
|
||||
let m44 = Number::parse(context, input)?;
|
||||
Ok(GenericTransformOperation::Matrix3D(Matrix3D {
|
||||
m11, m12, m13, m14,
|
||||
m21, m22, m23, m24,
|
||||
m31, m32, m33, m34,
|
||||
m41, m42, m43, m44,
|
||||
}))
|
||||
} else {
|
||||
// Non-standard prefixed matrix parsing for -moz-transform.
|
||||
let m41 = LengthOrPercentageOrNumber::parse(context, input)?;
|
||||
input.expect_comma()?;
|
||||
let m42 = LengthOrPercentageOrNumber::parse(context, input)?;
|
||||
input.expect_comma()?;
|
||||
let m43 = LengthOrNumber::parse(context, input)?;
|
||||
input.expect_comma()?;
|
||||
let m44 = Number::parse(context, input)?;
|
||||
Ok(GenericTransformOperation::PrefixedMatrix3D(Matrix3D {
|
||||
m11, m12, m13, m14,
|
||||
m21, m22, m23, m24,
|
||||
m31, m32, m33, m34,
|
||||
m41, m42, m43, m44,
|
||||
}))
|
||||
}
|
||||
// Standard matrix3d parsing.
|
||||
let m41 = Number::parse(context, input)?;
|
||||
input.expect_comma()?;
|
||||
let m42 = Number::parse(context, input)?;
|
||||
input.expect_comma()?;
|
||||
let m43 = Number::parse(context, input)?;
|
||||
input.expect_comma()?;
|
||||
let m44 = Number::parse(context, input)?;
|
||||
Ok(GenericTransformOperation::Matrix3D(Matrix3D {
|
||||
m11, m12, m13, m14,
|
||||
m21, m22, m23, m24,
|
||||
m31, m32, m33, m34,
|
||||
m41, m42, m43, m44,
|
||||
}))
|
||||
},
|
||||
"translate" => {
|
||||
let sx = specified::LengthOrPercentage::parse(context, input)?;
|
||||
|
@ -259,16 +230,6 @@ impl Transform {
|
|||
})
|
||||
})?))
|
||||
}
|
||||
|
||||
/// Parses `-moz-transform` property. This prefixed property also accepts LengthOrPercentage
|
||||
/// in the nondiagonal homogeneous components of matrix and matrix3d.
|
||||
#[inline]
|
||||
pub fn parse_prefixed<'i, 't>(
|
||||
context: &ParserContext,
|
||||
input: &mut Parser<'i, 't>,
|
||||
) -> Result<Self, ParseError<'i>> {
|
||||
Transform::parse_internal(context, input, true)
|
||||
}
|
||||
}
|
||||
|
||||
impl Parse for Transform {
|
||||
|
@ -276,7 +237,7 @@ impl Parse for Transform {
|
|||
context: &ParserContext,
|
||||
input: &mut Parser<'i, 't>
|
||||
) -> Result<Self, ParseError<'i>> {
|
||||
Transform::parse_internal(context, input, false)
|
||||
Transform::parse_internal(context, input)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue