5 * Protocol and abstract superclass for performing effects on windows.
7 * Copyright (c) 2005 iThink Software
11 #import <Cocoa/Cocoa.h>
12 #import <ITKit/ITWindowPositioning.h>
14 @class ITTransientStatusWindow;
16 #define EFFECT_FPS 30.0
17 #define DEFAULT_EFFECT_TIME 0.75
21 ITWindowAppearingState,
23 ITWindowVanishingState
24 } ITWindowVisibilityState;
26 @protocol ITWindowEffect
28 + (NSString *)effectName;
29 + (NSDictionary *)supportedPositions;
30 + (unsigned int)listOrder;
31 - (void)performAppear;
32 - (void)performVanish;
38 @protocol ITWindowMotility
40 - (ITWindowVisibilityState)visibilityState;
41 - (void)setVisibilityState:(ITWindowVisibilityState)newState;
42 - (float)effectProgress;
43 - (void)setEffectProgress:(float)newProgress;
47 @interface ITWindowEffect : NSObject <ITWindowEffect> {
48 NSWindow <ITWindowPositioning, ITWindowMotility> *_window;
51 ITVerticalWindowPosition _verticalPosition;
52 ITHorizontalWindowPosition _horizontalPosition;
53 NSTimer *_effectTimer;
55 BOOL __shouldReleaseWhenIdle;
58 + (NSArray *)effectClasses;
60 // Designated initializer
61 - (id)initWithWindow:(NSWindow *)window;
65 - (void)setWindow:(NSWindow *)newWindow;
67 - (void)setWindowVisibility:(ITWindowVisibilityState)visibilityState;
70 - (void)setEffectTime:(float)newTime;
72 - (void)releaseWhenIdle;