From f89ebf7fe9d72968c274c47205e8889ba6442f16 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Mon, 12 Feb 2018 23:35:18 +0100 Subject: [PATCH] Change AnimatedValue for NonNegativeNumber to CSSFloat --- .../helpers/animated_properties.mako.rs | 13 ++++-------- components/style/values/animated/effects.rs | 20 +++---------------- components/style/values/animated/mod.rs | 15 -------------- components/style/values/computed/mod.rs | 14 +++++++++++++ components/style/values/mod.rs | 2 +- 5 files changed, 22 insertions(+), 42 deletions(-) diff --git a/components/style/properties/helpers/animated_properties.mako.rs b/components/style/properties/helpers/animated_properties.mako.rs index 6ce41696e64..0d6fa24af2c 100644 --- a/components/style/properties/helpers/animated_properties.mako.rs +++ b/components/style/properties/helpers/animated_properties.mako.rs @@ -55,7 +55,6 @@ use values::distance::{ComputeSquaredDistance, SquaredDistance}; use values::generics::font::FontSettings as GenericFontSettings; use values::computed::font::FontVariationSettings; use values::generics::font::VariationValue; -use values::generics::NonNegative; use values::generics::effects::Filter; use values::generics::position as generic_position; use values::generics::svg::{SVGLength, SvgLengthOrPercentageOrNumber, SVGPaint}; @@ -789,7 +788,7 @@ impl ToAnimatedZero for AnimationValue { impl RepeatableListAnimatable for LengthOrPercentage {} impl RepeatableListAnimatable for Either {} impl RepeatableListAnimatable for Either {} -impl RepeatableListAnimatable for SvgLengthOrPercentageOrNumber {} +impl RepeatableListAnimatable for SvgLengthOrPercentageOrNumber {} macro_rules! repeated_vec_impl { ($($ty:ty),*) => { @@ -3012,12 +3011,8 @@ impl Animate for AnimatedFilter { }, % endfor % for func in ['Brightness', 'Contrast', 'Opacity', 'Saturate']: - (&Filter::${func}(ref this), &Filter::${func}(ref other)) => { - Ok(Filter::${func}(NonNegative(animate_multiplicative_factor( - this.0, - other.0, - procedure, - )?))) + (&Filter::${func}(this), &Filter::${func}(other)) => { + Ok(Filter::${func}(animate_multiplicative_factor(this, other, procedure)?)) }, % endfor % if product == "gecko": @@ -3038,7 +3033,7 @@ impl ToAnimatedZero for AnimatedFilter { Filter::${func}(ref this) => Ok(Filter::${func}(this.to_animated_zero()?)), % endfor % for func in ['Brightness', 'Contrast', 'Opacity', 'Saturate']: - Filter::${func}(_) => Ok(Filter::${func}(NonNegative(1.))), + Filter::${func}(_) => Ok(Filter::${func}(1.)), % endfor % if product == "gecko": Filter::DropShadow(ref this) => Ok(Filter::DropShadow(this.to_animated_zero()?)), diff --git a/components/style/values/animated/effects.rs b/components/style/values/animated/effects.rs index e677d5a1a8e..4e3aeb4fde8 100644 --- a/components/style/values/animated/effects.rs +++ b/components/style/values/animated/effects.rs @@ -12,7 +12,7 @@ use std::cmp; use values::Impossible; use values::animated::{Animate, Procedure, ToAnimatedValue, ToAnimatedZero}; use values::animated::color::RGBA; -use values::computed::{Angle, NonNegativeNumber}; +use values::computed::{Angle, Number}; use values::computed::length::{Length, NonNegativeLength}; use values::distance::{ComputeSquaredDistance, SquaredDistance}; use values::generics::effects::BoxShadow as GenericBoxShadow; @@ -42,11 +42,11 @@ pub struct FilterList(pub Vec); /// An animated value for a single `filter`. #[cfg(feature = "gecko")] -pub type Filter = GenericFilter; +pub type Filter = GenericFilter; /// An animated value for a single `filter`. #[cfg(not(feature = "gecko"))] -pub type Filter = GenericFilter; +pub type Filter = GenericFilter; /// An animated value for the `drop-shadow()` filter. pub type SimpleShadow = GenericSimpleShadow, Length, NonNegativeLength>; @@ -155,25 +155,11 @@ impl ComputeSquaredDistance for BoxShadow { impl ToAnimatedValue for ComputedFilterList { type AnimatedValue = FilterList; - #[cfg(not(feature = "gecko"))] - #[inline] - fn to_animated_value(self) -> Self::AnimatedValue { - FilterList(self.0) - } - - #[cfg(feature = "gecko")] #[inline] fn to_animated_value(self) -> Self::AnimatedValue { FilterList(self.0.to_animated_value()) } - #[cfg(not(feature = "gecko"))] - #[inline] - fn from_animated_value(animated: Self::AnimatedValue) -> Self { - ComputedFilterList(animated.0) - } - - #[cfg(feature = "gecko")] #[inline] fn from_animated_value(animated: Self::AnimatedValue) -> Self { ComputedFilterList(ToAnimatedValue::from_animated_value(animated.0)) diff --git a/components/style/values/animated/mod.rs b/components/style/values/animated/mod.rs index 9272db6d22e..bcb6dc46954 100644 --- a/components/style/values/animated/mod.rs +++ b/components/style/values/animated/mod.rs @@ -19,7 +19,6 @@ use values::computed::GreaterThanOrEqualToOneNumber as ComputedGreaterThanOrEqua use values::computed::MaxLength as ComputedMaxLength; use values::computed::MozLength as ComputedMozLength; use values::computed::NonNegativeLength as ComputedNonNegativeLength; -use values::computed::NonNegativeNumber as ComputedNonNegativeNumber; use values::specified::url::SpecifiedUrl; pub mod color; @@ -263,20 +262,6 @@ trivial_to_animated_value!(ComputedUrl); trivial_to_animated_value!(bool); trivial_to_animated_value!(f32); -impl ToAnimatedValue for ComputedNonNegativeNumber { - type AnimatedValue = Self; - - #[inline] - fn to_animated_value(self) -> Self { - self - } - - #[inline] - fn from_animated_value(animated: Self::AnimatedValue) -> Self { - animated.0.max(0.).into() - } -} - impl ToAnimatedValue for ComputedGreaterThanOrEqualToOneNumber { type AnimatedValue = Self; diff --git a/components/style/values/computed/mod.rs b/components/style/values/computed/mod.rs index c8db13e8b99..dca7354e3bf 100644 --- a/components/style/values/computed/mod.rs +++ b/components/style/values/computed/mod.rs @@ -429,6 +429,20 @@ pub type Number = CSSFloat; /// A wrapper of Number, but the value >= 0. pub type NonNegativeNumber = NonNegative; +impl ToAnimatedValue for NonNegativeNumber { + type AnimatedValue = CSSFloat; + + #[inline] + fn to_animated_value(self) -> Self::AnimatedValue { + self.0 + } + + #[inline] + fn from_animated_value(animated: Self::AnimatedValue) -> Self { + animated.max(0.).into() + } +} + impl From for NonNegativeNumber { #[inline] fn from(number: CSSFloat) -> NonNegativeNumber { diff --git a/components/style/values/mod.rs b/components/style/values/mod.rs index 95a9f7ef817..369d12eb800 100644 --- a/components/style/values/mod.rs +++ b/components/style/values/mod.rs @@ -64,7 +64,7 @@ where /// Convenience void type to disable some properties and values through types. #[cfg_attr(feature = "servo", derive(Deserialize, MallocSizeOf, Serialize))] -#[derive(Clone, Copy, Debug, PartialEq, ToComputedValue, ToCss)] +#[derive(Clone, Copy, Debug, PartialEq, ToAnimatedValue, ToComputedValue, ToCss)] pub enum Impossible {} // FIXME(nox): This should be derived but the derive code cannot cope