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 namespace ui { 8 9 FloatAnimationCurveAdapter::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 20 double FloatAnimationCurveAdapter::Duration() const { 21 return duration_.InSecondsF(); 22 } 23 24 scoped_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 33 float 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