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 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 Tween::ValueBetween(Tween::CalculateValue(tween_type_, progress), 40 initial_value_, 41 target_value_); 42} 43 44} // namespace ui 45