This is ScorePlot.m in view mode; [Download] [Up]
/* Generated by Interface Builder */ #import <appkit/appkit.h> #import "ScorePlot.h" @implementation ScorePlot - setUp { [window orderFront:self]; [self setSecondLength:40.0]; [self setClipping:NO]; [self allocateGState]; lastx = 0.0; drawPoint = frame.size.width - (3.0 * secondLength); [self display]; return self; } - drawSelf:(const NXRect *)r :(int)c { drawstafflines(r->origin.x, r->size.width); return self; } - setSecondLength:(float)length { secondLength = length; return self; } - drawNoteKey:(struct ScoreArgs *)sc_args { grafiknote gnote; NXPoint scrollPoint; if (sc_args->vel <= 0.0) return nil; if (sc_args->vel > 127.0) sc_args->vel = 127.0; if (sc_args->key < 0.0) return nil; if (sc_args->key >= 128.0) return nil; gnote.gray = (127.0 - sc_args->vel) / 127.0; gnote.x = secondLength * sc_args->start; gnote.y = sc_args->key * NOTESPACE; gnote.width = secondLength * sc_args->dur; scrollPoint.x = lastx - gnote.x; scrollPoint.y = 0.0; lastx = gnote.x; [self lockFocus]; /*PSsetinstance(YES);*/ [self scrollRect:&bounds by:&scrollPoint]; // PSsetgray(gnote.gray); // PSrectfill(drawPoint, gnote.y, gnote.width, NOTEHEIGHT); // PSsetgray(0); // PSrectstroke(drawPoint, gnote.y, gnote.width, NOTEHEIGHT); drawnote(gnote.gray, drawPoint, gnote.y, gnote.width, NOTEHEIGHT); [self unlockFocus]; [window flushWindow]; return self; } - drawDelayedNoteKey { struct ScoreArgs sc_args; [cScoreStorage retrieve:&sc_args]; return [self drawNoteKey:&sc_args]; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.