1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CC_ANIMATION_TIMING_FUNCTION_H_
6 #define CC_ANIMATION_TIMING_FUNCTION_H_
8 #include "cc/animation/animation_curve.h"
9 #include "cc/base/cc_export.h"
10 #include "ui/gfx/geometry/cubic_bezier.h"
14 // See http://www.w3.org/TR/css3-transitions/.
15 class CC_EXPORT TimingFunction
: public FloatAnimationCurve
{
17 virtual ~TimingFunction();
19 // Partial implementation of FloatAnimationCurve.
20 virtual double Duration() const OVERRIDE
;
22 // The smallest and largest values returned by GetValue for inputs in
24 virtual void Range(float* min
, float* max
) const = 0;
25 virtual float Velocity(double time
) const = 0;
31 DISALLOW_ASSIGN(TimingFunction
);
34 class CC_EXPORT CubicBezierTimingFunction
: public TimingFunction
{
36 static scoped_ptr
<CubicBezierTimingFunction
> Create(double x1
, double y1
,
37 double x2
, double y2
);
38 virtual ~CubicBezierTimingFunction();
40 // Partial implementation of FloatAnimationCurve.
41 virtual float GetValue(double time
) const OVERRIDE
;
42 virtual scoped_ptr
<AnimationCurve
> Clone() const OVERRIDE
;
44 virtual void Range(float* min
, float* max
) const OVERRIDE
;
45 virtual float Velocity(double time
) const OVERRIDE
;
48 CubicBezierTimingFunction(double x1
, double y1
, double x2
, double y2
);
50 gfx::CubicBezier bezier_
;
53 DISALLOW_ASSIGN(CubicBezierTimingFunction
);
56 class CC_EXPORT EaseTimingFunction
{
58 static scoped_ptr
<TimingFunction
> Create();
61 DISALLOW_IMPLICIT_CONSTRUCTORS(EaseTimingFunction
);
64 class CC_EXPORT EaseInTimingFunction
{
66 static scoped_ptr
<TimingFunction
> Create();
69 DISALLOW_IMPLICIT_CONSTRUCTORS(EaseInTimingFunction
);
72 class CC_EXPORT EaseOutTimingFunction
{
74 static scoped_ptr
<TimingFunction
> Create();
77 DISALLOW_IMPLICIT_CONSTRUCTORS(EaseOutTimingFunction
);
80 class CC_EXPORT EaseInOutTimingFunction
{
82 static scoped_ptr
<TimingFunction
> Create();
85 DISALLOW_IMPLICIT_CONSTRUCTORS(EaseInOutTimingFunction
);
90 #endif // CC_ANIMATION_TIMING_FUNCTION_H_