4 * Protocal and abstract superclass for performing effects on windows.
6 * Original Author : Matt Judy <mjudy@ithinksw.com>
7 * Responsibility : Matt 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 - (void)performAppear;
36 - (void)performVanish;
42 @protocol ITWindowMotility
43 - (ITWindowVisibilityState)visibilityState;
44 - (void)setVisibilityState:(ITWindowVisibilityState)newState;
45 - (float)effectProgress;
46 - (void)setEffectProgress:(float)newProgress;
50 @interface ITWindowEffect : NSObject <ITWindowEffect>
52 ITTransientStatusWindow *_window;
55 ITVerticalWindowPosition _verticalPosition;
56 ITHorizontalWindowPosition _horizontalPosition;
57 NSTimer *_effectTimer;
59 BOOL __shouldReleaseWhenIdle;
62 + (NSArray *)effectClasses;
64 // Designated initializer
65 - (id)initWithWindow:(NSWindow *)window;
69 - (void)setWindow:(NSWindow *)newWindow;
71 - (void)setWindowVisibility:(ITWindowVisibilityState)visibilityState;
74 - (void)setEffectTime:(float)newTime;
76 - (void)releaseWhenIdle;