Removing the use of private CoreGraphics APIs to draw shadows, and replacing with...
[ITKit.git] / ITWindowEffect.h
old mode 100755 (executable)
new mode 100644 (file)
index bb1c3b8..6fd2586
@@ -1,39 +1,74 @@
 /*
  *     ITKit
- *  ITWindowEffect
- *    Protocal and abstract superclass for performing effects on windows.
+ *     ITWindowEffect.h
  *
- *  Original Author : Matt Judy <mjudy@ithinksw.com>
- *   Responsibility : Matt Judy <mjudy@ithinksw.com>
+ *     Protocol and abstract superclass for performing effects on windows.
  *
- *  Copyright (c) 2002 - 2003 iThink Software.
- *  All Rights Reserved
+ *     Copyright (c) 2005 iThink Software
  *
  */
 
-
 #import <Cocoa/Cocoa.h>
+#import <ITKit/ITWindowPositioning.h>
+
+@class ITTransientStatusWindow;
+
+#define EFFECT_FPS 30.0
+#define DEFAULT_EFFECT_TIME 0.75
 
+typedef enum {
+       ITWindowHiddenState,
+       ITWindowAppearingState,
+       ITWindowVisibleState,
+       ITWindowVanishingState
+} ITWindowVisibilityState;
 
 @protocol ITWindowEffect
 
++ (NSString *)effectName;
++ (NSDictionary *)supportedPositions;
++ (unsigned int)listOrder;
 - (void)performAppear;
 - (void)performVanish;
+- (void)cancelAppear;
+- (void)cancelVanish;
 
 @end
 
+@protocol ITWindowMotility
+
+- (ITWindowVisibilityState)visibilityState;
+- (void)setVisibilityState:(ITWindowVisibilityState)newState;
+- (float)effectProgress;
+- (void)setEffectProgress:(float)newProgress;
+
+@end
 
-@interface ITWindowEffect : NSObject <ITWindowEffect>
-{
-    NSWindow *_window;
+@interface ITWindowEffect : NSObject <ITWindowEffect> {
+       NSWindow <ITWindowPositioning, ITWindowMotility> *_window;
+       float _effectTime;
+       float _effectSpeed;
+       ITVerticalWindowPosition _verticalPosition;
+       ITHorizontalWindowPosition _horizontalPosition;
+       NSTimer *_effectTimer;
+       BOOL __idle;
+       BOOL __shouldReleaseWhenIdle;
 }
 
++ (NSArray *)effectClasses;
+
 // Designated initializer
 - (id)initWithWindow:(NSWindow *)window;
 
 - (NSWindow *)window;
 
-// setWindow: does not retain or release its window.  It simply references it.
 - (void)setWindow:(NSWindow *)newWindow;
 
-@end
+- (void)setWindowVisibility:(ITWindowVisibilityState)visibilityState;
+
+- (float)effectTime;
+- (void)setEffectTime:(float)newTime;
+
+- (void)releaseWhenIdle;
+
+@end
\ No newline at end of file