4 * Protocal and abstract superclass for performing effects on windows.
6 * Original Author : Matthew Judy <mjudy@ithinksw.com>
7 * Responsibility : Matthew Judy <mjudy@ithinksw.com>
9 * Copyright (c) 2002 - 2003 iThink Software.
15 #import <Cocoa/Cocoa.h>
16 #import "ITWindowPositioning.h"
18 @class ITTransientStatusWindow;
20 #define EFFECT_FPS 30.0
21 #define DEFAULT_EFFECT_TIME 0.75
26 ITWindowAppearingState,
28 ITWindowVanishingState
29 } ITWindowVisibilityState;
32 @protocol ITWindowEffect
33 + (NSString *)effectName;
34 + (NSDictionary *)supportedPositions;
35 + (unsigned int)listOrder;
36 - (void)performAppear;
37 - (void)performVanish;
43 @protocol ITWindowMotility
44 - (ITWindowVisibilityState)visibilityState;
45 - (void)setVisibilityState:(ITWindowVisibilityState)newState;
46 - (float)effectProgress;
47 - (void)setEffectProgress:(float)newProgress;
51 @interface ITWindowEffect : NSObject <ITWindowEffect>
53 ITTransientStatusWindow *_window;
56 ITVerticalWindowPosition _verticalPosition;
57 ITHorizontalWindowPosition _horizontalPosition;
58 NSTimer *_effectTimer;
60 BOOL __shouldReleaseWhenIdle;
63 + (NSArray *)effectClasses;
65 // Designated initializer
66 - (id)initWithWindow:(NSWindow *)window;
70 - (void)setWindow:(NSWindow *)newWindow;
72 - (void)setWindowVisibility:(ITWindowVisibilityState)visibilityState;
75 - (void)setEffectTime:(float)newTime;
77 - (void)releaseWhenIdle;