Chromium Code Reviews| Index: Source/core/animation/DoubleStyleInterpolation.cpp |
| diff --git a/Source/core/animation/DoubleStyleInterpolation.cpp b/Source/core/animation/DoubleStyleInterpolation.cpp |
| index b4eb68d700d47ec30f4ade3f7a31072d3b7a9998..317cb57b8b46f418fea20043f4058fe7535ce1d1 100644 |
| --- a/Source/core/animation/DoubleStyleInterpolation.cpp |
| +++ b/Source/core/animation/DoubleStyleInterpolation.cpp |
| @@ -27,39 +27,36 @@ PassOwnPtrWillBeRawPtr<InterpolableValue> DoubleStyleInterpolation::doubleToInte |
| return nullptr; |
| } |
| -PassRefPtrWillBeRawPtr<CSSValue> DoubleStyleInterpolation::interpolableValueToDouble(InterpolableValue* value, bool isNumber, InterpolationRange clamp) |
| +static double clampToRange(double value, InterpolationRange clamp) |
| { |
| - ASSERT(value->isNumber()); |
| - double doubleValue = toInterpolableNumber(value)->value(); |
| - |
| switch (clamp) { |
| case RangeAll: |
| // Do nothing |
| - break; |
| + return value; |
| case RangeZeroToOne: |
| - doubleValue = clampTo<float>(doubleValue, 0, 1); |
| - break; |
| + return clampTo<float>(value, 0, 1); |
| case RangeOpacityFIXME: |
| - doubleValue = clampTo<float>(doubleValue, 0, nextafterf(1, 0)); |
| - break; |
| + return clampTo<float>(value, 0, nextafterf(1, 0)); |
| case RangeFloor: |
| - doubleValue = floor(doubleValue); |
| - break; |
| + return floor(value); |
| case RangeRound: |
| - doubleValue = round(doubleValue); |
| - break; |
| + return round(value); |
| case RangeRoundGreaterThanOrEqualToOne: |
| - doubleValue = clampTo<float>(round(doubleValue), 1); |
| - break; |
| + return clampTo<float>(round(value), 1); |
| case RangeGreaterThanOrEqualToOne: |
| - doubleValue = clampTo<float>(doubleValue, 1); |
| - break; |
| + return clampTo<float>(value, 1); |
| case RangeNonNegative: |
| - doubleValue = clampTo<float>(doubleValue, 0); |
| - break; |
| + return clampTo<float>(value, 0); |
| default: |
| ASSERT_NOT_REACHED(); |
|
alancutter (OOO until 2018)
2015/06/25 01:33:09
You still need a return value here.
|
| } |
| +} |
| + |
| +PassRefPtrWillBeRawPtr<CSSValue> DoubleStyleInterpolation::interpolableValueToDouble(InterpolableValue* value, bool isNumber, InterpolationRange clamp) |
| +{ |
| + ASSERT(value->isNumber()); |
| + double doubleValue = clampToRange(toInterpolableNumber(value)->value(), clamp); |
| + |
| if (isNumber) |
| return CSSPrimitiveValue::create(doubleValue, CSSPrimitiveValue::CSS_NUMBER); |
| return CSSPrimitiveValue::create(doubleValue, CSSPrimitiveValue::CSS_DEG); |
| @@ -80,6 +77,18 @@ DEFINE_TRACE(DoubleStyleInterpolation) |
| StyleInterpolation::trace(visitor); |
| } |
| +PassOwnPtrWillBeRawPtr<InterpolableValue> DoubleStyleInterpolation::toInterpolableValue(const CSSValue& value, CSSPropertyID property) |
| +{ |
| + ASSERT(canCreateFrom(value)); |
| + return doubleToInterpolableValue(value); |
| +} |
| + |
| +PassRefPtrWillBeRawPtr<CSSPrimitiveValue> DoubleStyleInterpolation::fromInterpolableValue(const InterpolableValue& value, InterpolationRange range) |
| +{ |
| + double doubleValue = clampToRange(toInterpolableNumber(value).value(), range); |
| + return CSSPrimitiveValue::create(doubleValue, CSSPrimitiveValue::CSS_NUMBER); |
|
alancutter (OOO until 2018)
2015/06/25 01:33:09
This can just call interpolableValueToDouble().
|
| +} |
| + |
| namespace { |
| bool extractMotionRotation(const CSSValue& value, float* rotation, MotionRotationType* rotationType) |