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