diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index bff9d838ef5..02e3ace6f44 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -2123,6 +2123,17 @@ fn static_assert() { self.gecko.mPerspectiveOrigin[1].copy_from(&other.gecko.mPerspectiveOrigin[1]); } + pub fn clone_perspective_origin(&self) -> longhands::perspective_origin::computed_value::T { + use properties::longhands::perspective_origin::computed_value::T; + use values::computed::LengthOrPercentage; + T { + horizontal: LengthOrPercentage::from_gecko_style_coord(&self.gecko.mPerspectiveOrigin[0]) + .expect("Expected length or percentage for horizontal value of perspective-origin"), + vertical: LengthOrPercentage::from_gecko_style_coord(&self.gecko.mPerspectiveOrigin[1]) + .expect("Expected length or percentage for vertical value of perspective-origin"), + } + } + pub fn set_transform_origin(&mut self, v: longhands::transform_origin::computed_value::T) { self.gecko.mTransformOrigin[0].set(v.horizontal); self.gecko.mTransformOrigin[1].set(v.vertical); diff --git a/components/style/properties/longhand/box.mako.rs b/components/style/properties/longhand/box.mako.rs index 731b59552ba..851beb6267c 100644 --- a/components/style/properties/longhand/box.mako.rs +++ b/components/style/properties/longhand/box.mako.rs @@ -1868,8 +1868,7 @@ ${helpers.predefined_type("perspective", fixpos_cb=True, animation_type="normal")} -// FIXME: This prop should be animatable -<%helpers:longhand name="perspective-origin" boxed="True" animation_type="none" extra_prefixes="moz webkit" +<%helpers:longhand name="perspective-origin" boxed="True" animation_type="normal" extra_prefixes="moz webkit" spec="https://drafts.csswg.org/css-transforms/#perspective-origin-property"> use std::fmt; use style_traits::ToCss; @@ -1877,22 +1876,11 @@ ${helpers.predefined_type("perspective", use values::specified::{LengthOrPercentage, Percentage}; pub mod computed_value { + use properties::animated_properties::Interpolate; use values::computed::LengthOrPercentage; + use values::computed::Position; - #[derive(Clone, Copy, Debug, PartialEq)] - #[cfg_attr(feature = "servo", derive(HeapSizeOf))] - pub struct T { - pub horizontal: LengthOrPercentage, - pub vertical: LengthOrPercentage, - } - } - - impl ToCss for computed_value::T { - fn to_css(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { - try!(self.horizontal.to_css(dest)); - try!(dest.write_str(" ")); - self.vertical.to_css(dest) - } + pub type T = Position; } impl HasViewportPercentage for SpecifiedValue {