| // Copyright (c) 2011 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. |
| |
| #ifndef CHROME_BROWSER_UI_PANELS_PANEL_BOUNDS_ANIMATION_H_ |
| #define CHROME_BROWSER_UI_PANELS_PANEL_BOUNDS_ANIMATION_H_ |
| |
| #include "ui/gfx/animation/linear_animation.h" |
| |
| namespace gfx { |
| class AnimationDelegate; |
| } |
| class Panel; |
| |
| class PanelBoundsAnimation : public gfx::LinearAnimation { |
| public: |
| PanelBoundsAnimation(gfx::AnimationDelegate* target, |
| Panel* panel, |
| const gfx::Rect& initial_bounds, |
| const gfx::Rect& final_bounds); |
| virtual ~PanelBoundsAnimation(); |
| virtual double GetCurrentValue() const OVERRIDE; |
| |
| // Static because it is reused on Mac to override NSAnimation's calculation. |
| static double ComputeAnimationValue(double progress, |
| bool for_big_minimize, |
| double animation_stop_to_show_titlebar); |
| |
| protected: |
| virtual void AnimateToState(double state) OVERRIDE {} |
| |
| private: |
| Panel* panel_; // Weak, owns us. |
| bool for_big_minimize_; |
| double animation_stop_to_show_titlebar_; |
| |
| DISALLOW_COPY_AND_ASSIGN(PanelBoundsAnimation); |
| }; |
| |
| #endif // CHROME_BROWSER_UI_PANELS_PANEL_BOUNDS_ANIMATION_H_ |