Index: cc/animation_curve.h |
diff --git a/cc/animation_curve.h b/cc/animation_curve.h |
index 638cbb270ce9b24689d5095baf174ade4f4d1a13..7ed6e7a9e50a43e6de296136d319b0edec2c6d3f 100644 |
--- a/cc/animation_curve.h |
+++ b/cc/animation_curve.h |
@@ -1,3 +1,56 @@ |
// 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 "base/memory/scoped_ptr.h" |
+#include <public/WebTransformationMatrix.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 scoped_ptr<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 |