// 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" namespace { const double epsilon = 1e-6; } // namespace namespace cc { CCTimingFunction::CCTimingFunction() { } CCTimingFunction::~CCTimingFunction() { } double CCTimingFunction::duration() const { return 1.0; } scoped_ptr CCCubicBezierTimingFunction::create(double x1, double y1, double x2, double y2) { return make_scoped_ptr(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(temp.solve(x, epsilon)); } scoped_ptr CCCubicBezierTimingFunction::clone() const { return make_scoped_ptr(new CCCubicBezierTimingFunction(*this)).PassAs(); } // These numbers come from http://www.w3.org/TR/css3-transitions/#transition-timing-function_tag. scoped_ptr CCEaseTimingFunction::create() { return CCCubicBezierTimingFunction::create(0.25, 0.1, 0.25, 1).PassAs(); } scoped_ptr CCEaseInTimingFunction::create() { return CCCubicBezierTimingFunction::create(0.42, 0, 1.0, 1).PassAs(); } scoped_ptr CCEaseOutTimingFunction::create() { return CCCubicBezierTimingFunction::create(0, 0, 0.58, 1).PassAs(); } scoped_ptr CCEaseInOutTimingFunction::create() { return CCCubicBezierTimingFunction::create(0.42, 0, 0.58, 1).PassAs(); } } // namespace cc