Chromium Code Reviews| Index: ui/compositor/transform_animation_curve_adapter.cc |
| diff --git a/ui/compositor/transform_animation_curve_adapter.cc b/ui/compositor/transform_animation_curve_adapter.cc |
| index 96500b3de521210c77a8bb853a5db7dace2e708c..93ec812ab4f1d4bcdeb5c08247bfa294662162f7 100644 |
| --- a/ui/compositor/transform_animation_curve_adapter.cc |
| +++ b/ui/compositor/transform_animation_curve_adapter.cc |
| @@ -51,4 +51,44 @@ gfx::Transform TransformAnimationCurveAdapter::GetValue( |
| return gfx::ComposeTransform(to_return); |
| } |
| +CounterTransformCurveAdapter::CounterTransformCurveAdapter( |
| + TransformAnimationCurveAdapter parent_curve, |
| + gfx::Transform initial_value, |
| + base::TimeDelta duration) |
| + : parent_curve_(parent_curve), |
| + initial_value_(initial_value), |
| + duration_(duration) { |
| + effective_initial_value_ = parent_curve_.GetValue(0.0) |
| + * initial_value_; |
|
Ian Vollick
2013/08/23 12:45:19
nit: weird leading whitespace.
avallee
2013/08/23 15:01:19
Done.
|
| +} |
| + |
| +CounterTransformCurveAdapter::~CounterTransformCurveAdapter() { |
| +} |
| + |
| +double CounterTransformCurveAdapter::Duration() const { |
| + return duration_.InSeconds(); |
| +} |
| + |
| +scoped_ptr<cc::AnimationCurve> CounterTransformCurveAdapter::Clone() const { |
| + scoped_ptr<CounterTransformCurveAdapter> to_return( |
| + new CounterTransformCurveAdapter(parent_curve_, |
| + initial_value_, |
| + duration_)); |
| + return to_return.PassAs<cc::AnimationCurve>(); |
| +} |
| + |
| +gfx::Transform CounterTransformCurveAdapter::GetValue( |
| + double t) const { |
| + if (t <= 0.0) |
| + return initial_value_; |
| + |
| + gfx::Transform parent_transform = parent_curve_.GetValue(t); |
| + // Invert parent |
| + gfx::Transform to_return(gfx::Transform::kSkipInitialization); |
| + DCHECK(parent_transform.GetInverse(&to_return)); |
| + |
| + to_return.PreconcatTransform(effective_initial_value_); |
| + return to_return; |
| +} |
| + |
| } // namespace ui |