• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_COCOA_ANIMATABLE_VIEW_H_
6 #define CHROME_BROWSER_UI_COCOA_ANIMATABLE_VIEW_H_
7 #pragma once
8 
9 #import <Cocoa/Cocoa.h>
10 
11 #import "base/mac/cocoa_protocols.h"
12 #include "base/memory/scoped_nsobject.h"
13 #import "chrome/browser/ui/cocoa/background_gradient_view.h"
14 #import "chrome/browser/ui/cocoa/view_resizer.h"
15 
16 // A view that provides an animatable height property.  Provides methods to
17 // animate to a new height, set a new height immediately, or cancel any running
18 // animations.
19 //
20 // AnimatableView sends an |animationDidEnd:| message to its delegate when the
21 // animation ends normally and an |animationDidStop:| message when the animation
22 // was canceled (even when canceled as a result of a new animation starting).
23 
24 @interface AnimatableView : BackgroundGradientView<NSAnimationDelegate> {
25  @protected
26   IBOutlet id delegate_;  // weak, used to send animation ended messages.
27 
28  @private
29   scoped_nsobject<NSAnimation> currentAnimation_;
30   id<ViewResizer> resizeDelegate_;  // weak, usually owns us
31 }
32 
33 // Properties for bindings.
34 @property(assign, nonatomic) id delegate;
35 @property(assign, nonatomic) id<ViewResizer> resizeDelegate;
36 
37 // Gets the current height of the view.  If an animation is currently running,
38 // this will give the current height at the time of the call, not the target
39 // height at the end of the animation.
40 - (CGFloat)height;
41 
42 // Sets the height of the view immediately.  Cancels any running animations.
43 - (void)setHeight:(CGFloat)newHeight;
44 
45 // Starts a new animation to the given |newHeight| for the given |duration|.
46 // Cancels any running animations.
47 - (void)animateToNewHeight:(CGFloat)newHeight
48                   duration:(NSTimeInterval)duration;
49 
50 // Cancels any running animations, leaving the view at its current
51 // (mid-animation) height.
52 - (void)stopAnimation;
53 
54 // Gets the progress of any current animation.
55 - (NSAnimationProgress)currentAnimationProgress;
56 
57 @end
58 
59 #endif  // CHROME_BROWSER_UI_COCOA_ANIMATABLE_VIEW_H_
60