From aa7cc261f826f1fb2a4735ac36f50bbba2a8640e Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sat, 10 Feb 2018 01:29:14 +0100 Subject: [PATCH] Determine animated types from specified types --- components/style/properties/data.py | 12 ++++++++++++ .../properties/helpers/animated_properties.mako.rs | 11 +++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/components/style/properties/data.py b/components/style/properties/data.py index ae25fb58e840..f87278f24784 100644 --- a/components/style/properties/data.py +++ b/components/style/properties/data.py @@ -229,6 +229,11 @@ def explicitly_enabled_in_chrome(self): def enabled_in_content(self): return self.enabled_in == "content" + def base_type(self): + if self.predefined_type and not self.is_vector: + return "::values::specified::{}".format(self.predefined_type) + return "longhands::{}::SpecifiedValue".format(self.ident) + def specified_type(self): if self.predefined_type and not self.is_vector: ty = "::values::specified::{}".format(self.predefined_type) @@ -281,6 +286,13 @@ def specified_is_copy(self): } return bool(self.keyword) + def animated_type(self): + assert self.animatable + computed = "<{} as ToComputedValue>::ComputedValue".format(self.base_type()) + if self.is_animatable_with_computed_value: + return computed + return "<{} as ToAnimatedValue>::AnimatedValue".format(computed) + class Shorthand(object): def __init__(self, name, sub_properties, spec=None, servo_pref=None, gecko_pref=None, diff --git a/components/style/properties/helpers/animated_properties.mako.rs b/components/style/properties/helpers/animated_properties.mako.rs index f47a0cc949dd..70bd242b00f7 100644 --- a/components/style/properties/helpers/animated_properties.mako.rs +++ b/components/style/properties/helpers/animated_properties.mako.rs @@ -4,7 +4,10 @@ <%namespace name="helpers" file="/helpers.mako.rs" /> -<% from data import to_idl_name, SYSTEM_FONT_LONGHANDS %> +<% + from data import to_idl_name, SYSTEM_FONT_LONGHANDS + from itertools import groupby +%> use cssparser::Parser; #[cfg(feature = "gecko")] use gecko_bindings::bindings::RawServoAnimationValueMap; @@ -349,11 +352,7 @@ pub enum AnimationValue { % for prop in data.longhands: % if prop.animatable: /// `${prop.name}` - % if prop.is_animatable_with_computed_value: - ${prop.camel_case}(longhands::${prop.ident}::computed_value::T), - % else: - ${prop.camel_case}(::AnimatedValue), - % endif + ${prop.camel_case}(${prop.animated_type()}), % else: /// `${prop.name}` (not animatable) ${prop.camel_case}(Void),