Removing the use of private CoreGraphics APIs to draw shadows, and replacing with...
[ITKit.git] / ITWindowEffect.h
1 /*
2  *      ITKit
3  *      ITWindowEffect.h
4  *
5  *      Protocol and abstract superclass for performing effects on windows.
6  *
7  *      Copyright (c) 2005 iThink Software
8  *
9  */
10
11 #import <Cocoa/Cocoa.h>
12 #import <ITKit/ITWindowPositioning.h>
13
14 @class ITTransientStatusWindow;
15
16 #define EFFECT_FPS 30.0
17 #define DEFAULT_EFFECT_TIME 0.75
18
19 typedef enum {
20         ITWindowHiddenState,
21         ITWindowAppearingState,
22         ITWindowVisibleState,
23         ITWindowVanishingState
24 } ITWindowVisibilityState;
25
26 @protocol ITWindowEffect
27
28 + (NSString *)effectName;
29 + (NSDictionary *)supportedPositions;
30 + (unsigned int)listOrder;
31 - (void)performAppear;
32 - (void)performVanish;
33 - (void)cancelAppear;
34 - (void)cancelVanish;
35
36 @end
37
38 @protocol ITWindowMotility
39
40 - (ITWindowVisibilityState)visibilityState;
41 - (void)setVisibilityState:(ITWindowVisibilityState)newState;
42 - (float)effectProgress;
43 - (void)setEffectProgress:(float)newProgress;
44
45 @end
46
47 @interface ITWindowEffect : NSObject <ITWindowEffect> {
48         NSWindow <ITWindowPositioning, ITWindowMotility> *_window;
49         float _effectTime;
50         float _effectSpeed;
51         ITVerticalWindowPosition _verticalPosition;
52         ITHorizontalWindowPosition _horizontalPosition;
53         NSTimer *_effectTimer;
54         BOOL __idle;
55         BOOL __shouldReleaseWhenIdle;
56 }
57
58 + (NSArray *)effectClasses;
59
60 // Designated initializer
61 - (id)initWithWindow:(NSWindow *)window;
62
63 - (NSWindow *)window;
64
65 - (void)setWindow:(NSWindow *)newWindow;
66
67 - (void)setWindowVisibility:(ITWindowVisibilityState)visibilityState;
68
69 - (float)effectTime;
70 - (void)setEffectTime:(float)newTime;
71
72 - (void)releaseWhenIdle;
73
74 @end