| 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..ff3948047e07e883dc9b134f6aa77a242af24336 100644
|
| --- a/ui/compositor/transform_animation_curve_adapter.cc
|
| +++ b/ui/compositor/transform_animation_curve_adapter.cc
|
| @@ -51,4 +51,43 @@ 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_;
|
| +}
|
| +
|
| +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
|
|
|