ftp.nice.ch/pub/next/science/mathematics/Chaos.1.0.N.bs.tar.gz#/Chaos/ScorePlot.m

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.