5 // Created by Chaz McGarvey on 12/6/04.
6 // Copyright 2004 Chaz McGarvey. All rights reserved.
12 @interface FadeView ( PrivateAPI
)
14 - (void)_fadeTimer
:(NSTimer
*)timer
;
19 @implementation FadeView
24 if ( self = [super init
] ) {
25 [self setFadeDuration
:1.0];
26 [self setFadeInterval
:5.0/60.0];
31 - (id)initWithFrame
:(NSRect
)frame
33 if ( self = [super initWithFrame
:frame
] ) {
34 [self setFadeDuration
:1.0];
35 [self setFadeInterval
:5.0/60.0];
42 [self stopFadeAnimation
];
48 - (void)drawRect
:(NSRect
)rect
50 [_fadeImage dissolveToPoint
:NSMakePoint(0,0) fraction
:_fadeAlpha
];
59 - (NSTimeInterval
)fadeDuration
64 - (NSTimeInterval
)fadeInterval
75 - (void)setImage
:(NSImage
*)image
82 - (void)setFadeDuration
:(NSTimeInterval
)seconds
84 if ( seconds
!= 0.0 ) {
85 _fadeDuration
= seconds
;
92 - (void)setFadeInterval
:(NSTimeInterval
)seconds
94 _fadeInterval
= seconds
;
97 - (void)startFadeAnimation
99 [self stopFadeAnimation
];
102 [self setNeedsDisplay
:YES
];
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
];
110 - (void)stopFadeAnimation
114 [_fadeTimer invalidate
];
115 [_fadeTimer release
];
120 - (void)_fadeTimer
:(NSTimer
*)timer
122 _fadeAlpha
-= [timer timeInterval
] / _fadeDuration
;
123 [self setNeedsDisplay
:YES
];
125 if ( _fadeAlpha
<= 0.0 ) {
126 [self stopFadeAnimation
];
127 if ( [_delegate respondsToSelector
:@selector(fadeViewFinishedAnimation
:)] ) {
128 [_delegate fadeViewFinishedAnimation
:self];
139 - (void)setDelegate
:(id)delegate
141 _delegate
= delegate
;