This is FadingImageView.m in view mode; [Download] [Up]
// // FadingImageView.m // // Lennart Lovstrand, Rank Xerox EuroPARC, August 1991. // small modifications by sam 910904 #import "FadingImageView.h" #import "Thinker.h" #import <appkit/NXImage.h> #import <dpsclient/wraps.h> #import <libc.h> #import <math.h> //#import <appkit/Application.h> #define STEPTIME 50 /* time between fades (millisec) */ #define WAITTIME 6000 /* wait before fading (millisec) */ #define FADEDELTA 0.05 @implementation FadingImageView - drawSelf:(const NXRect *)rects :(int)rectCount { NXPoint p; if (!rects || !rectCount) return self; [super drawSelf:rects :rectCount]; p.x = floor(imageRect.origin.x); p.y = floor(imageRect.origin.y); [image dissolve: delta toPoint: &p]; return self; } - oneStep { if (![self timePassed: steptime]) return self; switch (state) { case FV_FadeIn: delta += FADEDELTA; if (delta >= 1.0) { delta = 1.0; state = FV_FadeOut; steptime = WAITTIME; } PSsetgray(0.0); NXRectFill(&imageRect); [image dissolve: delta toPoint: &imageRect.origin]; break; case FV_FadeOut: delta -= FADEDELTA; if (delta <= 0.0) { delta = 0.0; state = FV_Move; } PSsetgray(0.0); NXRectFill(&imageRect); [image dissolve: delta toPoint: &imageRect.origin]; steptime = STEPTIME; break; case FV_Move: imageRect.origin.x = floor(randBetween(0, maxCoord.x)); imageRect.origin.y = floor(randBetween(0, maxCoord.y)); state = FV_FadeIn; steptime = STEPTIME; break; } return self; } - initFrame:(NXRect *)frameRect { steptime = STEPTIME; state = FV_Move; return [super initFrame:frameRect]; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.