This is AreaRule.m in view mode; [Download] [Up]
/* Generated by Interface Builder */
#import "math.h"
#import "AreaRule.h"
float lastFrameRate = 10.0;
@implementation AreaRule
DPSTimedEntry teNumber=0;
static void calculate();
- init
{ [super init];
initTable(0, 0);
//if (c_xw > C_XW)
c_xw = C_XW;
//if (c_yh > C_YH)
c_yh = C_YH;
return self;
}
void initTable(int phase, int dir)
{ int i, v, k=dir? 1: -1;
static int lastPhase, lastDir=-5;
if (phase == lastPhase && dir == lastDir)
return;
lastPhase = phase;
lastDir = dir;
for (i=0; i<NsineTable; i++)
{ v = 7.499*(sin(2*i*M_PI/NsineTable) + 1.0);
redTable [(i+phase + 0*NsineTable/3)%NsineTable] = v;
greenTable[(i+phase + k*NsineTable/3)%NsineTable] = v;
blueTable [(i+phase + 2*k*NsineTable/3)%NsineTable] = v;
} }
- start:sender
{ Self = self;
if (lastFrameRate <= 0)
intiTimedEntry(-lastFrameRate);
return self;
}
void intiTimedEntry(float frameRate)
{ if (frameRate == lastFrameRate)
return;
lastFrameRate = frameRate;
if (teNumber)
DPSRemoveTimedEntry(teNumber);
teNumber=DPSAddTimedEntry(1/lastFrameRate, calculate, (void *)0, 2);
}
- stop:sender
{ if (teNumber)
{ DPSRemoveTimedEntry(teNumber);
teNumber = 0;
lastFrameRate = -lastFrameRate;
}
return self;
}
static void calculate(DPSTimedEntry teNumbr, double now, char *userData)
{ [Self compute];
[Self display];
}
- drawSelf:(const NXRect *)rects :(int)rectCount
{ NXSetColor(NXConvertRGBAToColor(1.0, 1.0, 1.0, 1.0));
NXRectFill(&bounds);
return self;
}
- Randomize :sender { return self; }
- (void)compute {}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.