diff options
Diffstat (limited to 'cc/CCAnimationCurve.h')
-rw-r--r-- | cc/CCAnimationCurve.h | 56 |
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 |