Adds a FakeToolbarModel for use in testing.
[chromium-blink-merge.git] / cc / CCTimingFunction.cpp
blob224a0bac0669e0c18db065a5235f61a15f04263b
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 #include "config.h"
7 #include "CCTimingFunction.h"
9 #include <wtf/OwnPtr.h>
11 namespace {
12 const double epsilon = 1e-6;
13 } // namespace
15 namespace cc {
17 CCTimingFunction::CCTimingFunction()
21 CCTimingFunction::~CCTimingFunction()
25 double CCTimingFunction::duration() const
27 return 1.0;
30 PassOwnPtr<CCCubicBezierTimingFunction> CCCubicBezierTimingFunction::create(double x1, double y1, double x2, double y2)
32 return adoptPtr(new CCCubicBezierTimingFunction(x1, y1, x2, y2));
35 CCCubicBezierTimingFunction::CCCubicBezierTimingFunction(double x1, double y1, double x2, double y2)
36 : m_curve(x1, y1, x2, y2)
40 CCCubicBezierTimingFunction::~CCCubicBezierTimingFunction()
44 float CCCubicBezierTimingFunction::getValue(double x) const
46 UnitBezier temp(m_curve);
47 return static_cast<float>(temp.solve(x, epsilon));
50 PassOwnPtr<CCAnimationCurve> CCCubicBezierTimingFunction::clone() const
52 return adoptPtr(new CCCubicBezierTimingFunction(*this));
55 // These numbers come from http://www.w3.org/TR/css3-transitions/#transition-timing-function_tag.
56 PassOwnPtr<CCTimingFunction> CCEaseTimingFunction::create()
58 return CCCubicBezierTimingFunction::create(0.25, 0.1, 0.25, 1);
61 PassOwnPtr<CCTimingFunction> CCEaseInTimingFunction::create()
63 return CCCubicBezierTimingFunction::create(0.42, 0, 1.0, 1);
66 PassOwnPtr<CCTimingFunction> CCEaseOutTimingFunction::create()
68 return CCCubicBezierTimingFunction::create(0, 0, 0.58, 1);
71 PassOwnPtr<CCTimingFunction> CCEaseInOutTimingFunction::create()
73 return CCCubicBezierTimingFunction::create(0.42, 0, 0.58, 1);
76 } // namespace cc