summaryrefslogtreecommitdiffstats
path: root/cc/CCAnimationCurve.h
diff options
context:
space:
mode:
Diffstat (limited to 'cc/CCAnimationCurve.h')
-rw-r--r--cc/CCAnimationCurve.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/cc/CCAnimationCurve.h b/cc/CCAnimationCurve.h
new file mode 100644
index 0000000..4fb6141
--- /dev/null
+++ b/cc/CCAnimationCurve.h
@@ -0,0 +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 <public/WebTransformationMatrix.h>
+#include <wtf/PassOwnPtr.h>
+
+namespace WebCore {
+
+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 { return Float; }
+};
+
+class CCTransformAnimationCurve : public CCAnimationCurve {
+public:
+ virtual ~CCTransformAnimationCurve() { }
+
+ virtual WebKit::WebTransformationMatrix getValue(double t) const = 0;
+
+ // Partial CCAnimation implementation.
+ virtual Type type() const OVERRIDE { return Transform; }
+};
+
+} // namespace WebCore
+
+#endif // CCAnimation_h