summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/animation/css_rotate_interpolation_type.cc
diff options
context:
space:
mode:
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.cc32
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);