| // 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. |
| |
| #include "config.h" |
| |
| #include "CCTimingFunction.h" |
| |
| #include <wtf/OwnPtr.h> |
| |
| namespace { |
| const double epsilon = 1e-6; |
| } // namespace |
| |
| namespace WebCore { |
| |
| CCTimingFunction::CCTimingFunction() |
| { |
| } |
| |
| CCTimingFunction::~CCTimingFunction() |
| { |
| } |
| |
| double CCTimingFunction::duration() const |
| { |
| return 1.0; |
| } |
| |
| PassOwnPtr<CCCubicBezierTimingFunction> CCCubicBezierTimingFunction::create(double x1, double y1, double x2, double y2) |
| { |
| return adoptPtr(new CCCubicBezierTimingFunction(x1, y1, x2, y2)); |
| } |
| |
| CCCubicBezierTimingFunction::CCCubicBezierTimingFunction(double x1, double y1, double x2, double y2) |
| : m_curve(x1, y1, x2, y2) |
| { |
| } |
| |
| CCCubicBezierTimingFunction::~CCCubicBezierTimingFunction() |
| { |
| } |
| |
| float CCCubicBezierTimingFunction::getValue(double x) const |
| { |
| UnitBezier temp(m_curve); |
| return static_cast<float>(temp.solve(x, epsilon)); |
| } |
| |
| PassOwnPtr<CCAnimationCurve> CCCubicBezierTimingFunction::clone() const |
| { |
| return adoptPtr(new CCCubicBezierTimingFunction(*this)); |
| } |
| |
| // These numbers come from http://www.w3.org/TR/css3-transitions/#transition-timing-function_tag. |
| PassOwnPtr<CCTimingFunction> CCEaseTimingFunction::create() |
| { |
| return CCCubicBezierTimingFunction::create(0.25, 0.1, 0.25, 1); |
| } |
| |
| PassOwnPtr<CCTimingFunction> CCEaseInTimingFunction::create() |
| { |
| return CCCubicBezierTimingFunction::create(0.42, 0, 1.0, 1); |
| } |
| |
| PassOwnPtr<CCTimingFunction> CCEaseOutTimingFunction::create() |
| { |
| return CCCubicBezierTimingFunction::create(0, 0, 0.58, 1); |
| } |
| |
| PassOwnPtr<CCTimingFunction> CCEaseInOutTimingFunction::create() |
| { |
| return CCCubicBezierTimingFunction::create(0.42, 0, 0.58, 1); |
| } |
| |
| } // namespace WebCore |