This is MonotoneView.m in view mode; [Download] [Up]
#import "MonotoneView.h" #import <dpsclient/wraps.h> #import <appkit/NXImage.h> #import "../common.h" #import "imageOperation.h" @implementation MonotoneView /* Overload */ - initFrame:(const NXRect *)frameRect { [super initFrame:frameRect]; cache = [[NXImage alloc] initSize: &frameRect->size]; tone = NULL; [self drawCache]; return self; } /* Overload */ - free { [super free]; if (cache) [cache free]; return nil; } /* Overload */ - drawSelf:(NXRect *)r :(int) count { [cache composite:NX_COPY fromRect:r toPoint:&(r->origin)]; return self; } - drawCache { int i; float half, wid, thick, y; [cache lockFocus]; half = (wid = frame.size.width) / 2.0; thick = frame.size.height / 256.0; PSsetlinewidth(thick); if (tone) for (i = 0; i < 256; i++) { y = thick * i; PSsetgray(i/255.0); PSmoveto(0.0, y); PSlineto(half, y); PSstroke(); PSsetgray(tone[i]/255.0); PSmoveto(half, y); PSlineto(wid, y); PSstroke(); } else for (i = 0; i < 256; i++) { y = thick * i; PSsetgray(i/255.0); PSmoveto(0.0, y); PSlineto(wid, y); PSstroke(); } [cache unlockFocus]; return self; } - setTone:(unsigned char *)buffer { tone = buffer; [self drawCache]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.