Index: cc/animation/timing_function.cc |
diff --git a/cc/animation/timing_function.cc b/cc/animation/timing_function.cc |
index 71319e121d8c10ad3bf2f0c0a6b9dfd37c7bf165..25bd10e7ffd8415b2cc1967c5f4b2c46bdecd289 100644 |
--- a/cc/animation/timing_function.cc |
+++ b/cc/animation/timing_function.cc |
@@ -71,4 +71,38 @@ scoped_ptr<TimingFunction> EaseInOutTimingFunction::Create() { |
0.42, 0.0, 0.58, 1).PassAs<TimingFunction>(); |
} |
+scoped_ptr<StepsTimingFunction> StepsTimingFunction::Create( |
+ int steps, |
+ bool steps_at_start) { |
+ return make_scoped_ptr(new StepsTimingFunction(steps, steps_at_start)); |
+} |
+ |
+StepsTimingFunction::StepsTimingFunction(int steps, bool steps_at_start) |
+ : steps_(steps, steps_at_start) { |
+} |
+ |
+StepsTimingFunction::~StepsTimingFunction() { |
+} |
+ |
+float StepsTimingFunction::GetValue(double x) const { |
+ return static_cast<float>(steps_.Solve(x)); |
+} |
+ |
+scoped_ptr<AnimationCurve> StepsTimingFunction::Clone() const { |
+ return make_scoped_ptr(new StepsTimingFunction(*this)) |
+ .PassAs<AnimationCurve>(); |
+} |
+ |
+void StepsTimingFunction::Range(float* min, float* max) const { |
+ double min_d = 0; |
+ double max_d = 1; |
+ steps_.Range(&min_d, &max_d); |
+ *min = static_cast<float>(min_d); |
+ *max = static_cast<float>(max_d); |
+} |
+ |
+float StepsTimingFunction::Velocity(double x) const { |
+ return 0.0f; |
+} |
+ |
} // namespace cc |