diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/animation/css_rotate_interpolation_type.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/animation/css_rotate_interpolation_type.cc | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/chromium/third_party/blink/renderer/core/animation/css_rotate_interpolation_type.cc b/chromium/third_party/blink/renderer/core/animation/css_rotate_interpolation_type.cc index cf28f051802..ec70e75ac0f 100644 --- a/chromium/third_party/blink/renderer/core/animation/css_rotate_interpolation_type.cc +++ b/chromium/third_party/blink/renderer/core/animation/css_rotate_interpolation_type.cc @@ -140,7 +140,15 @@ class CSSRotateNonInterpolableValue : public NonInterpolableValue { }; DEFINE_NON_INTERPOLABLE_VALUE_TYPE(CSSRotateNonInterpolableValue); -DEFINE_NON_INTERPOLABLE_VALUE_TYPE_CASTS(CSSRotateNonInterpolableValue); +template <> +struct DowncastTraits<CSSRotateNonInterpolableValue> { + static bool AllowFrom(const NonInterpolableValue* value) { + return value && AllowFrom(*value); + } + static bool AllowFrom(const NonInterpolableValue& value) { + return value.GetType() == CSSRotateNonInterpolableValue::static_type_; + } +}; namespace { @@ -219,7 +227,7 @@ CSSRotateInterpolationType::PreInterpolationCompositeIfNeeded( EffectModel::CompositeOperation, ConversionCheckers&) const { value.non_interpolable_value = CSSRotateNonInterpolableValue::CreateAdditive( - ToCSSRotateNonInterpolableValue(*value.non_interpolable_value)); + To<CSSRotateNonInterpolableValue>(*value.non_interpolable_value)); return value; } @@ -230,8 +238,8 @@ PairwiseInterpolationValue CSSRotateInterpolationType::MaybeMergeSingles( std::make_unique<InterpolableNumber>(0), std::make_unique<InterpolableNumber>(1), CSSRotateNonInterpolableValue::Create( - ToCSSRotateNonInterpolableValue(*start.non_interpolable_value), - ToCSSRotateNonInterpolableValue(*end.non_interpolable_value))); + To<CSSRotateNonInterpolableValue>(*start.non_interpolable_value), + To<CSSRotateNonInterpolableValue>(*end.non_interpolable_value))); } InterpolationValue @@ -245,12 +253,12 @@ void CSSRotateInterpolationType::Composite( double underlying_fraction, const InterpolationValue& value, double interpolation_fraction) const { - const CSSRotateNonInterpolableValue& underlying_non_interpolable_value = - ToCSSRotateNonInterpolableValue( + const auto& underlying_non_interpolable_value = + To<CSSRotateNonInterpolableValue>( *underlying_value_owner.Value().non_interpolable_value); - const CSSRotateNonInterpolableValue& non_interpolable_value = - ToCSSRotateNonInterpolableValue(*value.non_interpolable_value); - double progress = ToInterpolableNumber(*value.interpolable_value).Value(); + const auto& non_interpolable_value = + To<CSSRotateNonInterpolableValue>(*value.non_interpolable_value); + double progress = To<InterpolableNumber>(*value.interpolable_value).Value(); underlying_value_owner.MutableValue().non_interpolable_value = underlying_non_interpolable_value.Composite(non_interpolable_value, progress); @@ -260,9 +268,9 @@ void CSSRotateInterpolationType::ApplyStandardPropertyValue( const InterpolableValue& interpolable_value, const NonInterpolableValue* untyped_non_interpolable_value, StyleResolverState& state) const { - double progress = ToInterpolableNumber(interpolable_value).Value(); - const CSSRotateNonInterpolableValue& non_interpolable_value = - ToCSSRotateNonInterpolableValue(*untyped_non_interpolable_value); + double progress = To<InterpolableNumber>(interpolable_value).Value(); + const auto& non_interpolable_value = + To<CSSRotateNonInterpolableValue>(*untyped_non_interpolable_value); OptionalRotation rotation = non_interpolable_value.SlerpedRotation(progress); if (rotation.IsNone()) { state.Style()->SetRotate(nullptr); |