1 // Copyright (c) 2011 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 #ifndef CHROME_BROWSER_UI_PANELS_PANEL_BOUNDS_ANIMATION_H_ 6 #define CHROME_BROWSER_UI_PANELS_PANEL_BOUNDS_ANIMATION_H_ 7 8 #include "ui/gfx/animation/linear_animation.h" 9 10 namespace gfx { 11 class AnimationDelegate; 12 } 13 class Panel; 14 15 class PanelBoundsAnimation : public gfx::LinearAnimation { 16 public: 17 PanelBoundsAnimation(gfx::AnimationDelegate* target, 18 Panel* panel, 19 const gfx::Rect& initial_bounds, 20 const gfx::Rect& final_bounds); 21 virtual ~PanelBoundsAnimation(); 22 virtual double GetCurrentValue() const OVERRIDE; 23 24 // Static because it is reused on Mac to override NSAnimation's calculation. 25 static double ComputeAnimationValue(double progress, 26 bool for_big_minimize, 27 double animation_stop_to_show_titlebar); 28 29 protected: AnimateToState(double state)30 virtual void AnimateToState(double state) OVERRIDE {} 31 32 private: 33 Panel* panel_; // Weak, owns us. 34 bool for_big_minimize_; 35 double animation_stop_to_show_titlebar_; 36 37 DISALLOW_COPY_AND_ASSIGN(PanelBoundsAnimation); 38 }; 39 40 #endif // CHROME_BROWSER_UI_PANELS_PANEL_BOUNDS_ANIMATION_H_ 41