3 * The Cheat - The legendary universal game trainer for Mac OS X.
4 * http://www.brokenzipper.com/trac/wiki/TheCheat
6 * Copyright (c) 2003-2011, Charles McGarvey et al.
8 * Distributable under the terms and conditions of the 2-clause BSD
9 * license; see the file COPYING for the legal text of the license.
16 @interface FadeView ( PrivateAPI
)
18 - (void)_fadeTimer
:(NSTimer
*)timer
;
23 @implementation FadeView
28 if ( self = [super init
] ) {
29 [self setFadeDuration
:1.0];
30 [self setFadeInterval
:5.0/60.0];
35 - (id)initWithFrame
:(NSRect
)frame
37 if ( self = [super initWithFrame
:frame
] ) {
38 [self setFadeDuration
:1.0];
39 [self setFadeInterval
:5.0/60.0];
46 [self stopFadeAnimation
];
52 - (void)drawRect
:(NSRect
)rect
54 [_fadeImage dissolveToPoint
:NSMakePoint(0,0) fraction
:_fadeAlpha
];
63 - (NSTimeInterval
)fadeDuration
68 - (NSTimeInterval
)fadeInterval
79 - (void)setImage
:(NSImage
*)image
86 - (void)setFadeDuration
:(NSTimeInterval
)seconds
88 if ( seconds
!= 0.0 ) {
89 _fadeDuration
= seconds
;
96 - (void)setFadeInterval
:(NSTimeInterval
)seconds
98 _fadeInterval
= seconds
;
101 - (void)startFadeAnimation
103 [self stopFadeAnimation
];
106 [self setNeedsDisplay
:YES
];
108 _fadeTimer
= [[NSTimer scheduledTimerWithTimeInterval
:_fadeInterval target
:self selector
:@selector(_fadeTimer
:) userInfo
:nil repeats
:YES
] retain
];
109 [[NSRunLoop currentRunLoop
] addTimer
:_fadeTimer forMode
:NSEventTrackingRunLoopMode
];
110 [[NSRunLoop currentRunLoop
] addTimer
:_fadeTimer forMode
:NSModalPanelRunLoopMode
];
114 - (void)stopFadeAnimation
118 [_fadeTimer invalidate
];
119 [_fadeTimer release
];
124 - (void)_fadeTimer
:(NSTimer
*)timer
126 _fadeAlpha
-= [timer timeInterval
] / _fadeDuration
;
127 [self setNeedsDisplay
:YES
];
129 if ( _fadeAlpha
<= 0.0 ) {
130 [self stopFadeAnimation
];
131 if ( [_delegate respondsToSelector
:@selector(fadeViewFinishedAnimation
:)] ) {
132 [_delegate fadeViewFinishedAnimation
:self];
143 - (void)setDelegate
:(id)delegate
145 _delegate
= delegate
;