This is HistogramView.m in view mode; [Download] [Up]
/***** HistogramView.m -- histogram data display object implementation NeXTstep Measurement Kit by Alex Meyer <ameyer@phoenix.Princeton.EDU> for computer science senior thesis 19 April 1992 -- created *****/ #import <stdlib.h> #import <dpsclient/wraps.h> #import "HistogramView.h" @implementation HistogramView - drawBar:(int)ind inRect:(NXRect *)rect { double fraction; NXRect myRect; myRect = *rect; NXInsetRect(&myRect,5,0); myRect.size.height -= 5; fraction = ((double) data[ind] - smallest) / (largest - smallest); myRect.size.height *= fraction; PSsetgray(NX_DKGRAY); NXRectFill(&myRect); return (self); } - drawSelf:(const NXRect *)rects /* should only draw what's needed */ :(int)rectCount { int i; NXRect bigRect,smallRect; PSsetgray(NX_LTGRAY); NXRectFill(&bounds); bigRect = bounds; NXInsetRect(&bigRect,5,5); NXDrawWhiteBezel(&bigRect,&bounds); NXInsetRect(&bigRect,5,5); PSnewpath(); PSmoveto(bigRect.origin.x,bigRect.origin.y); PSrlineto(bigRect.size.width,0); PSclosepath(); PSsetgray(NX_BLACK); PSstroke(); smallRect = bigRect; smallRect.size.width /= numData; for (i = 0;i < numData;++i) { [self drawBar:i inRect:&smallRect]; smallRect.origin.x += smallRect.size.width; } return (self); } - copyInNum:(int)num data:(unsigned *)ptr { int i; numData = num; data = malloc(num * sizeof(*data)); largest = 0; smallest = 0; for (i = 0;i < num;++i) { data[i] = ptr[i]; if (data[i] > largest) largest = data[i]; if (data[i] < smallest) smallest = data[i]; } return (self); } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.