Huge audit of ITKit, mostly everything has been updated to current coding
[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 by iThink Software.
8  *      All Rights Reserved.
9  *
10  *      $Id$
11  *
12  */
13
14 #import <Cocoa/Cocoa.h>
15 #import "ITWindowPositioning.h"
16
17 @class ITTransientStatusWindow;
18
19 #define EFFECT_FPS 30.0
20 #define DEFAULT_EFFECT_TIME 0.75
21
22 typedef enum {
23     ITWindowHiddenState,
24     ITWindowAppearingState,
25     ITWindowVisibleState,
26     ITWindowVanishingState
27 } ITWindowVisibilityState;
28
29 @protocol ITWindowEffect
30
31 + (NSString *)effectName;
32 + (NSDictionary *)supportedPositions;
33 + (unsigned int)listOrder;
34 - (void)performAppear;
35 - (void)performVanish;
36 - (void)cancelAppear;
37 - (void)cancelVanish;
38
39 @end
40
41 @protocol ITWindowMotility
42
43 - (ITWindowVisibilityState)visibilityState;
44 - (void)setVisibilityState:(ITWindowVisibilityState)newState;
45 - (float)effectProgress;
46 - (void)setEffectProgress:(float)newProgress;
47
48 @end
49
50 @interface ITWindowEffect : NSObject <ITWindowEffect> {
51     NSWindow <ITWindowPositioning, ITWindowMotility> *_window;
52     float _effectTime;
53     float _effectSpeed;
54     ITVerticalWindowPosition _verticalPosition;
55     ITHorizontalWindowPosition _horizontalPosition;
56     NSTimer *_effectTimer;
57     BOOL __idle;
58     BOOL __shouldReleaseWhenIdle;
59 }
60
61 + (NSArray *)effectClasses;
62
63 // Designated initializer
64 - (id)initWithWindow:(NSWindow *)window;
65
66 - (NSWindow *)window;
67
68 - (void)setWindow:(NSWindow *)newWindow;
69
70 - (void)setWindowVisibility:(ITWindowVisibilityState)visibilityState;
71
72 - (float)effectTime;
73 - (void)setEffectTime:(float)newTime;
74
75 - (void)releaseWhenIdle;
76
77 @end