]> Dogcows Code - chaz/thecheat/blobdiff - FadeView.m
The Cheat 1.2
[chaz/thecheat] / FadeView.m
diff --git a/FadeView.m b/FadeView.m
new file mode 100644 (file)
index 0000000..0e9b7ee
--- /dev/null
@@ -0,0 +1,145 @@
+//
+//  FadeView.m
+//  The Cheat
+//
+//  Created by Chaz McGarvey on 12/6/04.
+//  Copyright 2004 Chaz McGarvey. All rights reserved.
+//
+
+#import "FadeView.h"
+
+
+@interface FadeView ( PrivateAPI )
+
+- (void)_fadeTimer:(NSTimer *)timer;
+
+@end
+
+
+@implementation FadeView
+
+
+- (id)init
+{
+       if ( self = [super init] ) {
+               [self setFadeDuration:1.0];
+               [self setFadeInterval:5.0/60.0];
+       }
+       return self;
+}
+
+- (id)initWithFrame:(NSRect)frame
+{
+       if ( self = [super initWithFrame:frame] ) {
+               [self setFadeDuration:1.0];
+               [self setFadeInterval:5.0/60.0];
+       }
+       return self;
+}
+
+- (void)dealloc
+{
+       [self stopFadeAnimation];
+       [_fadeImage release];
+       [super dealloc];
+}
+
+
+- (void)drawRect:(NSRect)rect
+{
+    [_fadeImage dissolveToPoint:NSMakePoint(0,0) fraction:_fadeAlpha];
+}
+
+
+- (NSImage *)image
+{
+       return _fadeImage;
+}
+
+- (NSTimeInterval)fadeDuration
+{
+       return _fadeDuration;
+}
+
+- (NSTimeInterval)fadeInterval
+{
+       return _fadeInterval;
+}
+
+- (double)alpha
+{
+       return _fadeAlpha;
+}
+
+
+- (void)setImage:(NSImage *)image
+{
+       [image retain];
+       [_fadeImage release];
+       _fadeImage = image;
+}
+
+- (void)setFadeDuration:(NSTimeInterval)seconds
+{
+       if ( seconds != 0.0 ) {
+               _fadeDuration = seconds;
+       }
+       else {
+               _fadeDuration = 1.0;
+       }
+}
+
+- (void)setFadeInterval:(NSTimeInterval)seconds
+{
+       _fadeInterval = seconds;
+}
+
+- (void)startFadeAnimation
+{
+       [self stopFadeAnimation];
+       
+       _fadeAlpha = 1.0;
+       [self setNeedsDisplay:YES];
+       
+       _fadeTimer = [[NSTimer scheduledTimerWithTimeInterval:_fadeInterval target:self selector:@selector(_fadeTimer:) userInfo:nil repeats:YES] retain];
+       [[NSRunLoop currentRunLoop] addTimer:_fadeTimer forMode:NSEventTrackingRunLoopMode];
+       [[NSRunLoop currentRunLoop] addTimer:_fadeTimer forMode:NSModalPanelRunLoopMode];
+       [self release];
+}
+
+- (void)stopFadeAnimation
+{
+       if ( _fadeTimer ) {
+               [self retain];
+               [_fadeTimer invalidate];
+               [_fadeTimer release];
+               _fadeTimer = nil;
+       }
+}
+
+- (void)_fadeTimer:(NSTimer *)timer
+{
+       _fadeAlpha -= [timer timeInterval] / _fadeDuration;
+       [self setNeedsDisplay:YES];
+       
+       if ( _fadeAlpha <= 0.0 ) {
+               [self stopFadeAnimation];
+               if ( [_delegate respondsToSelector:@selector(fadeViewFinishedAnimation:)] ) {
+                       [_delegate fadeViewFinishedAnimation:self];
+               }
+       }
+}
+
+
+- (id)delegate
+{
+       return _delegate;
+}
+
+- (void)setDelegate:(id)delegate
+{
+       _delegate = delegate;
+}
+
+
+@end
This page took 0.01896 seconds and 4 git commands to generate.