summaryrefslogtreecommitdiff
path: root/chromium/cc/animation/keyframed_animation_curve.h
diff options
context:
space:
mode:
authorZeno Albisser <zeno.albisser@digia.com>2013-08-15 21:46:11 +0200
committerZeno Albisser <zeno.albisser@digia.com>2013-08-15 21:46:11 +0200
commit679147eead574d186ebf3069647b4c23e8ccace6 (patch)
treefc247a0ac8ff119f7c8550879ebb6d3dd8d1ff69 /chromium/cc/animation/keyframed_animation_curve.h
downloadqtwebengine-chromium-679147eead574d186ebf3069647b4c23e8ccace6.tar.gz
Initial import.
Diffstat (limited to 'chromium/cc/animation/keyframed_animation_curve.h')
-rw-r--r--chromium/cc/animation/keyframed_animation_curve.h178
1 files changed, 178 insertions, 0 deletions
diff --git a/chromium/cc/animation/keyframed_animation_curve.h b/chromium/cc/animation/keyframed_animation_curve.h
new file mode 100644
index 00000000000..9dda773caec
--- /dev/null
+++ b/chromium/cc/animation/keyframed_animation_curve.h
@@ -0,0 +1,178 @@
+// 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 CC_ANIMATION_KEYFRAMED_ANIMATION_CURVE_H_
+#define CC_ANIMATION_KEYFRAMED_ANIMATION_CURVE_H_
+
+#include "cc/animation/animation_curve.h"
+#include "cc/animation/timing_function.h"
+#include "cc/animation/transform_operations.h"
+#include "cc/base/cc_export.h"
+#include "cc/base/scoped_ptr_vector.h"
+
+namespace cc {
+
+class CC_EXPORT Keyframe {
+ public:
+ double Time() const;
+ const TimingFunction* timing_function() const {
+ return timing_function_.get();
+ }
+
+ protected:
+ Keyframe(double time, scoped_ptr<TimingFunction> timing_function);
+ virtual ~Keyframe();
+
+ private:
+ double time_;
+ scoped_ptr<TimingFunction> timing_function_;
+
+ DISALLOW_COPY_AND_ASSIGN(Keyframe);
+};
+
+class CC_EXPORT FloatKeyframe : public Keyframe {
+ public:
+ static scoped_ptr<FloatKeyframe> Create(
+ double time,
+ float value,
+ scoped_ptr<TimingFunction> timing_function);
+ virtual ~FloatKeyframe();
+
+ float Value() const;
+
+ scoped_ptr<FloatKeyframe> Clone() const;
+
+ private:
+ FloatKeyframe(double time,
+ float value,
+ scoped_ptr<TimingFunction> timing_function);
+
+ float value_;
+};
+
+class CC_EXPORT TransformKeyframe : public Keyframe {
+ public:
+ static scoped_ptr<TransformKeyframe> Create(
+ double time,
+ const TransformOperations& value,
+ scoped_ptr<TimingFunction> timing_function);
+ virtual ~TransformKeyframe();
+
+ const TransformOperations& Value() const;
+
+ scoped_ptr<TransformKeyframe> Clone() const;
+
+ private:
+ TransformKeyframe(
+ double time,
+ const TransformOperations& value,
+ scoped_ptr<TimingFunction> timing_function);
+
+ TransformOperations value_;
+};
+
+class CC_EXPORT FilterKeyframe : public Keyframe {
+ public:
+ static scoped_ptr<FilterKeyframe> Create(
+ double time,
+ const FilterOperations& value,
+ scoped_ptr<TimingFunction> timing_function);
+ virtual ~FilterKeyframe();
+
+ const FilterOperations& Value() const;
+
+ scoped_ptr<FilterKeyframe> Clone() const;
+
+ private:
+ FilterKeyframe(
+ double time,
+ const FilterOperations& value,
+ scoped_ptr<TimingFunction> timing_function);
+
+ FilterOperations value_;
+};
+
+class CC_EXPORT KeyframedFloatAnimationCurve : public FloatAnimationCurve {
+ public:
+ // It is required that the keyframes be sorted by time.
+ static scoped_ptr<KeyframedFloatAnimationCurve> Create();
+
+ virtual ~KeyframedFloatAnimationCurve();
+
+ void AddKeyframe(scoped_ptr<FloatKeyframe> keyframe);
+
+ // AnimationCurve implementation
+ virtual double Duration() const OVERRIDE;
+ virtual scoped_ptr<AnimationCurve> Clone() const OVERRIDE;
+
+ // FloatAnimationCurve implementation
+ virtual float GetValue(double t) const OVERRIDE;
+
+ private:
+ KeyframedFloatAnimationCurve();
+
+ // Always sorted in order of increasing time. No two keyframes have the
+ // same time.
+ ScopedPtrVector<FloatKeyframe> keyframes_;
+
+ DISALLOW_COPY_AND_ASSIGN(KeyframedFloatAnimationCurve);
+};
+
+class CC_EXPORT KeyframedTransformAnimationCurve
+ : public TransformAnimationCurve {
+ public:
+ // It is required that the keyframes be sorted by time.
+ static scoped_ptr<KeyframedTransformAnimationCurve> Create();
+
+ virtual ~KeyframedTransformAnimationCurve();
+
+ void AddKeyframe(scoped_ptr<TransformKeyframe> keyframe);
+
+ // AnimationCurve implementation
+ virtual double Duration() const OVERRIDE;
+ virtual scoped_ptr<AnimationCurve> Clone() const OVERRIDE;
+
+ // TransformAnimationCurve implementation
+ virtual gfx::Transform GetValue(double t) const OVERRIDE;
+
+ private:
+ KeyframedTransformAnimationCurve();
+
+ // Always sorted in order of increasing time. No two keyframes have the
+ // same time.
+ ScopedPtrVector<TransformKeyframe> keyframes_;
+
+ DISALLOW_COPY_AND_ASSIGN(KeyframedTransformAnimationCurve);
+};
+
+class CC_EXPORT KeyframedFilterAnimationCurve
+ : public FilterAnimationCurve {
+ public:
+ // It is required that the keyframes be sorted by time.
+ static scoped_ptr<KeyframedFilterAnimationCurve> Create();
+
+ virtual ~KeyframedFilterAnimationCurve();
+
+ void AddKeyframe(scoped_ptr<FilterKeyframe> keyframe);
+
+ // AnimationCurve implementation
+ virtual double Duration() const OVERRIDE;
+ virtual scoped_ptr<AnimationCurve> Clone() const OVERRIDE;
+
+ // FilterAnimationCurve implementation
+ virtual FilterOperations GetValue(double t) const OVERRIDE;
+
+ private:
+ KeyframedFilterAnimationCurve();
+
+ // Always sorted in order of increasing time. No two keyframes have the
+ // same time.
+ ScopedPtrVector<FilterKeyframe> keyframes_;
+
+ DISALLOW_COPY_AND_ASSIGN(KeyframedFilterAnimationCurve);
+};
+
+} // namespace cc
+
+#endif // CC_ANIMATION_KEYFRAMED_ANIMATION_CURVE_H_