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 
7 #include "base/memory/ptr_util.h"
8 
9 namespace ui {
10 
FloatAnimationCurveAdapter(gfx::Tween::Type tween_type,float initial_value,float target_value,base::TimeDelta duration)11 FloatAnimationCurveAdapter::FloatAnimationCurveAdapter(
12     gfx::Tween::Type tween_type,
13     float initial_value,
14     float target_value,
15     base::TimeDelta duration)
16     : tween_type_(tween_type),
17       initial_value_(initial_value),
18       target_value_(target_value),
19       duration_(duration) {
20 }
21 
Duration() const22 base::TimeDelta FloatAnimationCurveAdapter::Duration() const {
23   return duration_;
24 }
25 
Clone() const26 std::unique_ptr<cc::AnimationCurve> FloatAnimationCurveAdapter::Clone() const {
27   return base::WrapUnique(new FloatAnimationCurveAdapter(
28       tween_type_, initial_value_, target_value_, duration_));
29 }
30 
GetValue(base::TimeDelta t) const31 float FloatAnimationCurveAdapter::GetValue(base::TimeDelta t) const {
32   if (t >= duration_)
33     return target_value_;
34   if (t <= base::TimeDelta())
35     return initial_value_;
36 
37   return gfx::Tween::FloatValueBetween(
38       gfx::Tween::CalculateValue(tween_type_, t / duration_), initial_value_,
39       target_value_);
40 }
41 
42 }  // namespace ui
43