mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
style: Fix the default behavior of scale:<number>{1}.
The current spec says: "If only the X value is given, the Y value defaults to the same value.", so we should update the behavior. Besides, we also update the serialization, so we serialization both specified and computed value by servo. We enable the preference for all the css-transforms, so some of them are passed now. Differential Revision: https://phabricator.services.mozilla.com/D10638
This commit is contained in:
parent
264a679c50
commit
23f2e99e99
4 changed files with 65 additions and 23 deletions
|
@ -7,6 +7,8 @@
|
|||
use app_units::Au;
|
||||
use euclid::{self, Rect, Transform3D};
|
||||
use num_traits::Zero;
|
||||
use std::fmt::{self, Write};
|
||||
use style_traits::{CssWriter, ToCss};
|
||||
use values::computed::length::Length as ComputedLength;
|
||||
use values::computed::length::LengthOrPercentage as ComputedLengthOrPercentage;
|
||||
use values::specified::angle::Angle as SpecifiedAngle;
|
||||
|
@ -560,7 +562,6 @@ pub enum Rotate<Number, Angle> {
|
|||
SpecifiedValueInfo,
|
||||
ToAnimatedZero,
|
||||
ToComputedValue,
|
||||
ToCss,
|
||||
)]
|
||||
/// A value of the `Scale` property
|
||||
///
|
||||
|
@ -568,14 +569,38 @@ pub enum Rotate<Number, Angle> {
|
|||
pub enum Scale<Number> {
|
||||
/// 'none'
|
||||
None,
|
||||
/// '<number>'
|
||||
ScaleX(Number),
|
||||
/// '<number>{2}'
|
||||
/// '<number>{1,2}'
|
||||
Scale(Number, Number),
|
||||
/// '<number>{3}'
|
||||
Scale3D(Number, Number, Number),
|
||||
}
|
||||
|
||||
impl<Number: ToCss + PartialEq> ToCss for Scale<Number> {
|
||||
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
|
||||
where
|
||||
W: fmt::Write,
|
||||
{
|
||||
match self {
|
||||
&Scale::None => dest.write_str("none"),
|
||||
&Scale::Scale(ref x, ref y) => {
|
||||
x.to_css(dest)?;
|
||||
if x != y {
|
||||
dest.write_char(' ')?;
|
||||
y.to_css(dest)?;
|
||||
}
|
||||
Ok(())
|
||||
},
|
||||
&Scale::Scale3D(ref x, ref y, ref z) => {
|
||||
x.to_css(dest)?;
|
||||
dest.write_char(' ')?;
|
||||
y.to_css(dest)?;
|
||||
dest.write_char(' ')?;
|
||||
z.to_css(dest)
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(
|
||||
Clone,
|
||||
ComputeSquaredDistance,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue