Index: app/slide_animation.cc |
diff --git a/app/slide_animation.cc b/app/slide_animation.cc |
index ca468d2bc94e49800a6053e320289d5022f7a95e..c79e3ec308201b5dc12a2022d1c8d8914996cc14 100644 |
--- a/app/slide_animation.cc |
+++ b/app/slide_animation.cc |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
+// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
@@ -13,9 +13,9 @@ static const int kDefaultFramerateHz = 50; |
static const int kDefaultDurationMs = 120; |
SlideAnimation::SlideAnimation(AnimationDelegate* target) |
- : Animation(kDefaultFramerateHz, target), |
+ : LinearAnimation(kDefaultFramerateHz, target), |
target_(target), |
- tween_type_(EASE_OUT), |
+ tween_type_(Tween::EASE_OUT), |
showing_(false), |
value_start_(0), |
value_end_(0), |
@@ -84,36 +84,13 @@ void SlideAnimation::AnimateToState(double state) { |
if (state > 1.0) |
state = 1.0; |
- // Make our animation ease-out. |
- switch (tween_type_) { |
- case EASE_IN: |
- state = pow(state, 2); |
- break; |
- case EASE_IN_OUT: |
- if (state < 0.5) |
- state = pow(state * 2, 2) / 2.0; |
- else |
- state = 1.0 - (pow((state - 1.0) * 2, 2) / 2.0); |
- break; |
- case FAST_IN_OUT: |
- state = (pow(state - 0.5, 3) + 0.125) / 0.25; |
- break; |
- case NONE: |
- // state remains linear. |
- break; |
- case EASE_OUT_SNAP: |
- state = 0.95 * (1.0 - pow(1.0 - state, 2)); |
- break; |
- case EASE_OUT: |
- default: |
- state = 1.0 - pow(1.0 - state, 2); |
- break; |
- } |
+ state = Tween::CalculateValue(tween_type_, state); |
value_current_ = value_start_ + (value_end_ - value_start_) * state; |
// Implement snapping. |
- if (tween_type_ == EASE_OUT_SNAP && fabs(value_current_ - value_end_) <= 0.06) |
+ if (tween_type_ == Tween::EASE_OUT_SNAP && |
+ fabs(value_current_ - value_end_) <= 0.06) |
value_current_ = value_end_; |
// Correct for any overshoot (while state may be capped at 1.0, let's not |