| // Copyright 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CCAnimationCurve_h |
| #define CCAnimationCurve_h |
| |
| #include <public/WebTransformationMatrix.h> |
| #include <wtf/PassOwnPtr.h> |
| |
| namespace cc { |
| |
| class CCFloatAnimationCurve; |
| class CCTransformAnimationCurve; |
| class IntSize; |
| class TransformOperations; |
| |
| // An animation curve is a function that returns a value given a time. |
| // There are currently only two types of curve, float and transform. |
| class CCAnimationCurve { |
| public: |
| enum Type { Float, Transform }; |
| |
| virtual ~CCAnimationCurve() { } |
| |
| virtual double duration() const = 0; |
| virtual Type type() const = 0; |
| virtual PassOwnPtr<CCAnimationCurve> clone() const = 0; |
| |
| const CCFloatAnimationCurve* toFloatAnimationCurve() const; |
| const CCTransformAnimationCurve* toTransformAnimationCurve() const; |
| }; |
| |
| class CCFloatAnimationCurve : public CCAnimationCurve { |
| public: |
| virtual ~CCFloatAnimationCurve() { } |
| |
| virtual float getValue(double t) const = 0; |
| |
| // Partial CCAnimation implementation. |
| virtual Type type() const OVERRIDE; |
| }; |
| |
| class CCTransformAnimationCurve : public CCAnimationCurve { |
| public: |
| virtual ~CCTransformAnimationCurve() { } |
| |
| virtual WebKit::WebTransformationMatrix getValue(double t) const = 0; |
| |
| // Partial CCAnimation implementation. |
| virtual Type type() const OVERRIDE; |
| }; |
| |
| } // namespace cc |
| |
| #endif // CCAnimation_h |