]> Dogcows Code - chaz/thecheat/blob - FadeView.m
The Cheat 1.2
[chaz/thecheat] / FadeView.m
1 //
2 // FadeView.m
3 // The Cheat
4 //
5 // Created by Chaz McGarvey on 12/6/04.
6 // Copyright 2004 Chaz McGarvey. All rights reserved.
7 //
8
9 #import "FadeView.h"
10
11
12 @interface FadeView ( PrivateAPI )
13
14 - (void)_fadeTimer:(NSTimer *)timer;
15
16 @end
17
18
19 @implementation FadeView
20
21
22 - (id)init
23 {
24 if ( self = [super init] ) {
25 [self setFadeDuration:1.0];
26 [self setFadeInterval:5.0/60.0];
27 }
28 return self;
29 }
30
31 - (id)initWithFrame:(NSRect)frame
32 {
33 if ( self = [super initWithFrame:frame] ) {
34 [self setFadeDuration:1.0];
35 [self setFadeInterval:5.0/60.0];
36 }
37 return self;
38 }
39
40 - (void)dealloc
41 {
42 [self stopFadeAnimation];
43 [_fadeImage release];
44 [super dealloc];
45 }
46
47
48 - (void)drawRect:(NSRect)rect
49 {
50 [_fadeImage dissolveToPoint:NSMakePoint(0,0) fraction:_fadeAlpha];
51 }
52
53
54 - (NSImage *)image
55 {
56 return _fadeImage;
57 }
58
59 - (NSTimeInterval)fadeDuration
60 {
61 return _fadeDuration;
62 }
63
64 - (NSTimeInterval)fadeInterval
65 {
66 return _fadeInterval;
67 }
68
69 - (double)alpha
70 {
71 return _fadeAlpha;
72 }
73
74
75 - (void)setImage:(NSImage *)image
76 {
77 [image retain];
78 [_fadeImage release];
79 _fadeImage = image;
80 }
81
82 - (void)setFadeDuration:(NSTimeInterval)seconds
83 {
84 if ( seconds != 0.0 ) {
85 _fadeDuration = seconds;
86 }
87 else {
88 _fadeDuration = 1.0;
89 }
90 }
91
92 - (void)setFadeInterval:(NSTimeInterval)seconds
93 {
94 _fadeInterval = seconds;
95 }
96
97 - (void)startFadeAnimation
98 {
99 [self stopFadeAnimation];
100
101 _fadeAlpha = 1.0;
102 [self setNeedsDisplay:YES];
103
104 _fadeTimer = [[NSTimer scheduledTimerWithTimeInterval:_fadeInterval target:self selector:@selector(_fadeTimer:) userInfo:nil repeats:YES] retain];
105 [[NSRunLoop currentRunLoop] addTimer:_fadeTimer forMode:NSEventTrackingRunLoopMode];
106 [[NSRunLoop currentRunLoop] addTimer:_fadeTimer forMode:NSModalPanelRunLoopMode];
107 [self release];
108 }
109
110 - (void)stopFadeAnimation
111 {
112 if ( _fadeTimer ) {
113 [self retain];
114 [_fadeTimer invalidate];
115 [_fadeTimer release];
116 _fadeTimer = nil;
117 }
118 }
119
120 - (void)_fadeTimer:(NSTimer *)timer
121 {
122 _fadeAlpha -= [timer timeInterval] / _fadeDuration;
123 [self setNeedsDisplay:YES];
124
125 if ( _fadeAlpha <= 0.0 ) {
126 [self stopFadeAnimation];
127 if ( [_delegate respondsToSelector:@selector(fadeViewFinishedAnimation:)] ) {
128 [_delegate fadeViewFinishedAnimation:self];
129 }
130 }
131 }
132
133
134 - (id)delegate
135 {
136 return _delegate;
137 }
138
139 - (void)setDelegate:(id)delegate
140 {
141 _delegate = delegate;
142 }
143
144
145 @end
This page took 0.041212 seconds and 5 git commands to generate.