Derive ToCss for Transform<T>

Now that #[derive(ToCss)] unconditionally bounds type params, we can derive
the trait for Transform<T>.
This commit is contained in:
Anthony Ramine 2018-03-08 11:14:02 +01:00
parent 859002a81f
commit 91e12563eb

View file

@ -7,8 +7,6 @@
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, CSSFloat};
use values::computed::length::Length as ComputedLength;
use values::computed::length::LengthOrPercentage as ComputedLengthOrPercentage;
@ -300,10 +298,9 @@ pub enum TransformOperation<Angle, Number, Length, Integer, LengthOrPercentage>
},
}
#[derive(Animate, ToComputedValue)]
#[derive(Clone, Debug, MallocSizeOf, PartialEq)]
#[derive(Animate, Clone, Debug, MallocSizeOf, PartialEq, ToComputedValue, ToCss)]
/// A value of the `transform` property
pub struct Transform<T>(pub Vec<T>);
pub struct Transform<T>(#[css(if_empty = "none", iterable)] pub Vec<T>);
impl<Angle, Number, Length, Integer, LengthOrPercentage>
TransformOperation<Angle, Number, Length, Integer, LengthOrPercentage> {
@ -511,27 +508,6 @@ where
}
}
impl<T: ToCss> ToCss for Transform<T> {
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
where
W: Write,
{
if self.0.is_empty() {
return dest.write_str("none");
}
let mut first = true;
for operation in &self.0 {
if !first {
dest.write_str(" ")?;
}
first = false;
operation.to_css(dest)?
}
Ok(())
}
}
impl<T> Transform<T> {
/// `none`
pub fn none() -> Self {