• 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_IMAGE_H_
6 #define CHROME_BROWSER_UI_COCOA_ANIMATABLE_IMAGE_H_
7 #pragma once
8 
9 #import <Cocoa/Cocoa.h>
10 #import <QuartzCore/QuartzCore.h>
11 
12 #include "base/memory/scoped_nsobject.h"
13 
14 // This class helps animate an NSImage's frame and opacity. It works by creating
15 // a blank NSWindow in the size specified and giving it a layer on which the
16 // image can be animated. Clients are free to embed this object as a child
17 // window for easier window management. This class will clean itself up when
18 // the animation has finished. Clients that install this as a child window
19 // should listen for the NSWindowWillCloseNotification to perform any additional
20 // cleanup.
21 @interface AnimatableImage : NSWindow {
22  @private
23   // The image to animate.
24   scoped_nsobject<NSImage> image_;
25 
26   // The frame of the image before and after the animation. This is in this
27   // window's coordinate system.
28   CGRect startFrame_;
29   CGRect endFrame_;
30 
31   // Opacity values for the animation.
32   CGFloat startOpacity_;
33   CGFloat endOpacity_;
34 
35   // The amount of time it takes to animate the image.
36   CGFloat duration_;
37 }
38 
39 @property(nonatomic) CGRect startFrame;
40 @property(nonatomic) CGRect endFrame;
41 @property(nonatomic) CGFloat startOpacity;
42 @property(nonatomic) CGFloat endOpacity;
43 @property(nonatomic) CGFloat duration;
44 
45 // Designated initializer. Do not use any other NSWindow initializers. Creates
46 // but does not show the blank animation window of the given size. The
47 // |animationFrame| should usually be big enough to contain the |startFrame|
48 // and |endFrame| properties of the animation.
49 - (id)initWithImage:(NSImage*)image
50      animationFrame:(NSRect)animationFrame;
51 
52 // Begins the animation.
53 - (void)startAnimation;
54 
55 @end
56 
57 #endif  // CHROME_BROWSER_UI_COCOA_ANIMATABLE_IMAGE_H_
58