transform_animation_curve_adapter.cc revision 3551c9c881056c480085172ff9840cab31610854
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/transform_animation_curve_adapter.h" 6 7namespace ui { 8 9TransformAnimationCurveAdapter::TransformAnimationCurveAdapter( 10 Tween::Type tween_type, 11 gfx::Transform initial_value, 12 gfx::Transform 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 gfx::DecomposeTransform(&decomposed_initial_value_, initial_value_); 19 gfx::DecomposeTransform(&decomposed_target_value_, target_value_); 20} 21 22TransformAnimationCurveAdapter::~TransformAnimationCurveAdapter() { 23} 24 25double TransformAnimationCurveAdapter::Duration() const { 26 return duration_.InSecondsF(); 27} 28 29scoped_ptr<cc::AnimationCurve> TransformAnimationCurveAdapter::Clone() const { 30 scoped_ptr<TransformAnimationCurveAdapter> to_return( 31 new TransformAnimationCurveAdapter(tween_type_, 32 initial_value_, 33 target_value_, 34 duration_)); 35 return to_return.PassAs<cc::AnimationCurve>(); 36} 37 38gfx::Transform TransformAnimationCurveAdapter::GetValue( 39 double t) const { 40 if (t >= duration_.InSecondsF()) 41 return target_value_; 42 if (t <= 0.0) 43 return initial_value_; 44 double progress = t / duration_.InSecondsF(); 45 46 gfx::DecomposedTransform to_return; 47 gfx::BlendDecomposedTransforms(&to_return, 48 decomposed_target_value_, 49 decomposed_initial_value_, 50 Tween::CalculateValue(tween_type_, progress)); 51 return gfx::ComposeTransform(to_return); 52} 53 54bool TransformAnimationCurveAdapter::AnimatedBoundsForBox( 55 const gfx::BoxF& box, 56 gfx::BoxF* bounds) const { 57 // TODO(ajuma): Once cc::TransformOperation::BlendedBoundsForBox supports 58 // computing bounds for TransformOperationMatrix, use that to compute 59 // the bounds we need here. 60 return false; 61} 62 63} // namespace ui 64