Make perspective origin animatable

This commit is contained in:
Mantaroh Yoshinaga 2017-04-14 14:56:44 +09:00
parent 6f7db7c571
commit 799cbcb94c
2 changed files with 15 additions and 16 deletions

View file

@ -2123,6 +2123,17 @@ fn static_assert() {
self.gecko.mPerspectiveOrigin[1].copy_from(&other.gecko.mPerspectiveOrigin[1]); 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) { pub fn set_transform_origin(&mut self, v: longhands::transform_origin::computed_value::T) {
self.gecko.mTransformOrigin[0].set(v.horizontal); self.gecko.mTransformOrigin[0].set(v.horizontal);
self.gecko.mTransformOrigin[1].set(v.vertical); self.gecko.mTransformOrigin[1].set(v.vertical);

View file

@ -1869,8 +1869,7 @@ ${helpers.predefined_type("perspective",
fixpos_cb=True, fixpos_cb=True,
animation_type="normal")} animation_type="normal")}
// FIXME: This prop should be animatable <%helpers:longhand name="perspective-origin" boxed="True" animation_type="normal" extra_prefixes="moz webkit"
<%helpers:longhand name="perspective-origin" boxed="True" animation_type="none" extra_prefixes="moz webkit"
spec="https://drafts.csswg.org/css-transforms/#perspective-origin-property"> spec="https://drafts.csswg.org/css-transforms/#perspective-origin-property">
use std::fmt; use std::fmt;
use style_traits::ToCss; use style_traits::ToCss;
@ -1878,22 +1877,11 @@ ${helpers.predefined_type("perspective",
use values::specified::{LengthOrPercentage, Percentage}; use values::specified::{LengthOrPercentage, Percentage};
pub mod computed_value { pub mod computed_value {
use properties::animated_properties::Interpolate;
use values::computed::LengthOrPercentage; use values::computed::LengthOrPercentage;
use values::computed::Position;
#[derive(Clone, Copy, Debug, PartialEq)] pub type T = Position;
#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
pub struct T {
pub horizontal: LengthOrPercentage,
pub vertical: LengthOrPercentage,
}
}
impl ToCss for computed_value::T {
fn to_css<W>(&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)
}
} }
impl HasViewportPercentage for SpecifiedValue { impl HasViewportPercentage for SpecifiedValue {