1// Copyright (c) 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.
4
5#include "ui/compositor/float_animation_curve_adapter.h"
6
7namespace ui {
8
9FloatAnimationCurveAdapter::FloatAnimationCurveAdapter(
10    gfx::Tween::Type tween_type,
11    float initial_value,
12    float target_value,
13    base::TimeDelta duration)
14    : tween_type_(tween_type),
15      initial_value_(initial_value),
16      target_value_(target_value),
17      duration_(duration) {
18}
19
20double FloatAnimationCurveAdapter::Duration() const {
21  return duration_.InSecondsF();
22}
23
24scoped_ptr<cc::AnimationCurve> FloatAnimationCurveAdapter::Clone() const {
25  scoped_ptr<FloatAnimationCurveAdapter> to_return(
26      new FloatAnimationCurveAdapter(tween_type_,
27                                     initial_value_,
28                                     target_value_,
29                                     duration_));
30  return to_return.PassAs<cc::AnimationCurve>();
31}
32
33float FloatAnimationCurveAdapter::GetValue(double t) const {
34  if (t >= duration_.InSecondsF())
35    return target_value_;
36  if (t <= 0.0)
37    return initial_value_;
38  double progress = t / duration_.InSecondsF();
39  return gfx::Tween::FloatValueBetween(
40      gfx::Tween::CalculateValue(tween_type_, progress),
41      initial_value_,
42      target_value_);
43}
44
45}  // namespace ui
46