| Index: cc/keyframed_animation_curve.h
|
| diff --git a/cc/keyframed_animation_curve.h b/cc/keyframed_animation_curve.h
|
| index 638cbb270ce9b24689d5095baf174ade4f4d1a13..066e5c64da43527ac2037858ab82f8465e8720c8 100644
|
| --- a/cc/keyframed_animation_curve.h
|
| +++ b/cc/keyframed_animation_curve.h
|
| @@ -1,3 +1,109 @@
|
| // 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 CCKeyframedAnimationCurve_h
|
| +#define CCKeyframedAnimationCurve_h
|
| +
|
| +#include "CCAnimationCurve.h"
|
| +#include "CCTimingFunction.h"
|
| +#include "scoped_ptr_vector.h"
|
| +#include <public/WebTransformOperations.h>
|
| +
|
| +namespace cc {
|
| +
|
| +class CCKeyframe {
|
| +public:
|
| + double time() const;
|
| + const CCTimingFunction* timingFunction() const;
|
| +
|
| +protected:
|
| + CCKeyframe(double time, scoped_ptr<CCTimingFunction>);
|
| + virtual ~CCKeyframe();
|
| +
|
| +private:
|
| + double m_time;
|
| + scoped_ptr<CCTimingFunction> m_timingFunction;
|
| +};
|
| +
|
| +class CCFloatKeyframe : public CCKeyframe {
|
| +public:
|
| + static scoped_ptr<CCFloatKeyframe> create(double time, float value, scoped_ptr<CCTimingFunction>);
|
| + virtual ~CCFloatKeyframe();
|
| +
|
| + float value() const;
|
| +
|
| + scoped_ptr<CCFloatKeyframe> clone() const;
|
| +
|
| +private:
|
| + CCFloatKeyframe(double time, float value, scoped_ptr<CCTimingFunction>);
|
| +
|
| + float m_value;
|
| +};
|
| +
|
| +class CCTransformKeyframe : public CCKeyframe {
|
| +public:
|
| + static scoped_ptr<CCTransformKeyframe> create(double time, const WebKit::WebTransformOperations& value, scoped_ptr<CCTimingFunction>);
|
| + virtual ~CCTransformKeyframe();
|
| +
|
| + const WebKit::WebTransformOperations& value() const;
|
| +
|
| + scoped_ptr<CCTransformKeyframe> clone() const;
|
| +
|
| +private:
|
| + CCTransformKeyframe(double time, const WebKit::WebTransformOperations& value, scoped_ptr<CCTimingFunction>);
|
| +
|
| + WebKit::WebTransformOperations m_value;
|
| +};
|
| +
|
| +class CCKeyframedFloatAnimationCurve : public CCFloatAnimationCurve {
|
| +public:
|
| + // It is required that the keyframes be sorted by time.
|
| + static scoped_ptr<CCKeyframedFloatAnimationCurve> create();
|
| +
|
| + virtual ~CCKeyframedFloatAnimationCurve();
|
| +
|
| + void addKeyframe(scoped_ptr<CCFloatKeyframe>);
|
| +
|
| + // CCAnimationCurve implementation
|
| + virtual double duration() const OVERRIDE;
|
| + virtual scoped_ptr<CCAnimationCurve> clone() const OVERRIDE;
|
| +
|
| + // CCFloatAnimationCurve implementation
|
| + virtual float getValue(double t) const OVERRIDE;
|
| +
|
| +private:
|
| + CCKeyframedFloatAnimationCurve();
|
| +
|
| + // Always sorted in order of increasing time. No two keyframes have the
|
| + // same time.
|
| + ScopedPtrVector<CCFloatKeyframe> m_keyframes;
|
| +};
|
| +
|
| +class CCKeyframedTransformAnimationCurve : public CCTransformAnimationCurve {
|
| +public:
|
| + // It is required that the keyframes be sorted by time.
|
| + static scoped_ptr<CCKeyframedTransformAnimationCurve> create();
|
| +
|
| + virtual ~CCKeyframedTransformAnimationCurve();
|
| +
|
| + void addKeyframe(scoped_ptr<CCTransformKeyframe>);
|
| +
|
| + // CCAnimationCurve implementation
|
| + virtual double duration() const OVERRIDE;
|
| + virtual scoped_ptr<CCAnimationCurve> clone() const OVERRIDE;
|
| +
|
| + // CCTransformAnimationCurve implementation
|
| + virtual WebKit::WebTransformationMatrix getValue(double t) const OVERRIDE;
|
| +
|
| +private:
|
| + CCKeyframedTransformAnimationCurve();
|
| +
|
| + // Always sorted in order of increasing time. No two keyframes have the
|
| + // same time.
|
| + ScopedPtrVector<CCTransformKeyframe> m_keyframes;
|
| +};
|
| +
|
| +} // namespace cc
|
| +
|
| +#endif // CCKeyframedAnimationCurve_h
|
|
|