| Index: third_party/WebKit/Source/core/animation/Interpolation.h
|
| diff --git a/third_party/WebKit/Source/core/animation/Interpolation.h b/third_party/WebKit/Source/core/animation/Interpolation.h
|
| index 6131a9858762cd417810491535cad51e68a42610..744d8c6158829d14f463ff65b15af4e17e9ad041 100644
|
| --- a/third_party/WebKit/Source/core/animation/Interpolation.h
|
| +++ b/third_party/WebKit/Source/core/animation/Interpolation.h
|
| @@ -15,38 +15,42 @@ namespace blink {
|
|
|
| class PropertyHandle;
|
|
|
| -// Represents an animation's effect between an adjacent pair of PropertySpecificKeyframes.
|
| +// Represents an animation's effect between two values.
|
| class CORE_EXPORT Interpolation : public RefCounted<Interpolation> {
|
| WTF_MAKE_NONCOPYABLE(Interpolation);
|
| public:
|
| - virtual ~Interpolation();
|
| -
|
| - virtual void interpolate(int iteration, double fraction);
|
| -
|
| + // TODO(alancutter): Remove StyleInterpolation and LegacyStyleInterpolation and upstream StackableInterpolation as Interpolation.
|
| virtual bool isStyleInterpolation() const { return false; }
|
| - virtual bool isInvalidatableInterpolation() const { return false; }
|
| virtual bool isLegacyStyleInterpolation() const { return false; }
|
|
|
| + virtual bool isStackableInterpolation() const { return false; }
|
| + virtual bool isKeyframeInterpolation() const { return false; }
|
| + virtual bool isPairwiseInterpolation() const { return false; }
|
| +
|
| + void interpolate(int iteration, double fraction)
|
| + {
|
| + if (iteration == m_currentIteration && fraction == m_currentFraction)
|
| + return;
|
| + m_currentIteration = iteration;
|
| + m_currentFraction = fraction;
|
| + interpolateImpl();
|
| + }
|
| +
|
| virtual PropertyHandle getProperty() const = 0;
|
| virtual bool dependsOnUnderlyingValue() const { return false; }
|
|
|
| -protected:
|
| - const std::unique_ptr<InterpolableValue> m_start;
|
| - const std::unique_ptr<InterpolableValue> m_end;
|
| -
|
| - mutable double m_cachedFraction;
|
| - mutable int m_cachedIteration;
|
| - mutable std::unique_ptr<InterpolableValue> m_cachedValue;
|
| + virtual ~Interpolation() {}
|
|
|
| - Interpolation(std::unique_ptr<InterpolableValue> start, std::unique_ptr<InterpolableValue> end);
|
| +protected:
|
| + Interpolation()
|
| + : m_currentIteration(std::numeric_limits<double>::quiet_NaN())
|
| + , m_currentFraction(std::numeric_limits<double>::quiet_NaN())
|
| + { }
|
|
|
| -private:
|
| - InterpolableValue* getCachedValueForTesting() const { return m_cachedValue.get(); }
|
| + virtual void interpolateImpl() = 0;
|
|
|
| - friend class AnimationInterpolableValueTest;
|
| - friend class AnimationInterpolationEffectTest;
|
| - friend class AnimationDoubleStyleInterpolationTest;
|
| - friend class AnimationVisibilityStyleInterpolationTest;
|
| + double m_currentIteration;
|
| + double m_currentFraction;
|
| };
|
|
|
| using ActiveInterpolations = Vector<RefPtr<Interpolation>, 1>;
|
|
|