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 - (void)performAppear;
34 - (void)performVanish;
40 @protocol ITWindowMotility
41 - (ITWindowVisibilityState)visibilityState;
42 - (void)setVisibilityState:(ITWindowVisibilityState)newState;
43 - (float)effectProgress;
44 - (void)setEffectProgress:(float)newProgress;
48 @interface ITWindowEffect : NSObject <ITWindowEffect>
50 ITTransientStatusWindow *_window;
53 ITVerticalWindowPosition _verticalPosition;
54 ITHorizontalWindowPosition _horizontalPosition;
55 NSTimer *_effectTimer;
57 BOOL __shouldReleaseWhenIdle;
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;