15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_UI_PANELS_PANEL_BOUNDS_ANIMATION_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_PANELS_PANEL_BOUNDS_ANIMATION_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ui/gfx/animation/linear_animation.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)namespace gfx {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AnimationDelegate;
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Panel;
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)class PanelBoundsAnimation : public gfx::LinearAnimation {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
17d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  PanelBoundsAnimation(gfx::AnimationDelegate* target,
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       Panel* panel,
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const gfx::Rect& initial_bounds,
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const gfx::Rect& final_bounds);
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~PanelBoundsAnimation();
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual double GetCurrentValue() const OVERRIDE;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Static because it is reused on Mac to override NSAnimation's calculation.
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static double ComputeAnimationValue(double progress,
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      bool for_big_minimize,
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      double animation_stop_to_show_titlebar);
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void AnimateToState(double state) OVERRIDE {}
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Panel* panel_;  // Weak, owns us.
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool for_big_minimize_;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  double animation_stop_to_show_titlebar_;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(PanelBoundsAnimation);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_UI_PANELS_PANEL_BOUNDS_ANIMATION_H_
41