IndexedDB: fsync after transactions.
[chromium-blink-merge.git] / cc / animation / timing_function.h
blob056ad41419357eb4e6771801296d3f7b920c6e4e
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 "third_party/skia/include/core/SkScalar.h"
12 namespace cc {
14 // See http://www.w3.org/TR/css3-transitions/.
15 class CC_EXPORT TimingFunction : public FloatAnimationCurve {
16 public:
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
23 // [0, 1].
24 virtual void Range(float* min, float* max) const = 0;
26 protected:
27 TimingFunction();
29 private:
30 DISALLOW_ASSIGN(TimingFunction);
33 class CC_EXPORT CubicBezierTimingFunction : public TimingFunction {
34 public:
35 static scoped_ptr<CubicBezierTimingFunction> Create(double x1, double y1,
36 double x2, double y2);
37 virtual ~CubicBezierTimingFunction();
39 // Partial implementation of FloatAnimationCurve.
40 virtual float GetValue(double time) const OVERRIDE;
41 virtual scoped_ptr<AnimationCurve> Clone() const OVERRIDE;
43 virtual void Range(float* min, float* max) const OVERRIDE;
45 protected:
46 CubicBezierTimingFunction(double x1, double y1, double x2, double y2);
48 double x1_;
49 double y1_;
50 double x2_;
51 double y2_;
53 private:
54 DISALLOW_ASSIGN(CubicBezierTimingFunction);
57 class CC_EXPORT EaseTimingFunction {
58 public:
59 static scoped_ptr<TimingFunction> Create();
61 private:
62 DISALLOW_IMPLICIT_CONSTRUCTORS(EaseTimingFunction);
65 class CC_EXPORT EaseInTimingFunction {
66 public:
67 static scoped_ptr<TimingFunction> Create();
69 private:
70 DISALLOW_IMPLICIT_CONSTRUCTORS(EaseInTimingFunction);
73 class CC_EXPORT EaseOutTimingFunction {
74 public:
75 static scoped_ptr<TimingFunction> Create();
77 private:
78 DISALLOW_IMPLICIT_CONSTRUCTORS(EaseOutTimingFunction);
81 class CC_EXPORT EaseInOutTimingFunction {
82 public:
83 static scoped_ptr<TimingFunction> Create();
85 private:
86 DISALLOW_IMPLICIT_CONSTRUCTORS(EaseInOutTimingFunction);
89 } // namespace cc
91 #endif // CC_ANIMATION_TIMING_FUNCTION_H_