diff options
author | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-15 21:46:11 +0200 |
---|---|---|
committer | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-15 21:46:11 +0200 |
commit | 679147eead574d186ebf3069647b4c23e8ccace6 (patch) | |
tree | fc247a0ac8ff119f7c8550879ebb6d3dd8d1ff69 /chromium/cc/animation/keyframed_animation_curve.h | |
download | qtwebengine-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.h | 178 |
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_ |