ftp.nice.ch/peanuts/GeneralData/Usenet/news/1989/CSN-89.tar.gz#/comp-sys-next/1989/Aug/displaying-8-bit-grayscale-data-files

This is displaying-8-bit-grayscale-data-files in view mode; [Up]


Date: Sun 27-Aug-1989 00:49:44 From: Unknown Subject: Re: displaying 8-bit grayscale data files We store and display seismic data as 8-bit grayscale images. A class to do this follows. (The class contains other methods for interacting with the seismic database which is a text file of dimensions and binary data.) /* Generated by the NeXT Interface Builder */ #import <appkit/appkit.h> #import <appkit/View.h> @interface SeisView: View { id panel; id form; /* form for entering data dimensions */ id file; id n1; /* fast dimension */ id n2; id image; /* NeXTStep image object */ char *data; /* file data buffer */ } + newFrame: (NXRect *) frameRect - drawSelf: (NXRect*)rect: (int)count; - newdata: sender; - openData: sender; - rattle; /* show error by shaking */ @end /* Generated by the NeXT Interface Builder */ #import "SeisView.h" @implementation SeisView + newFrame: (NXRect *) frameRect { self = [ super newFrame: frameRect ]; image = 0; data = 0; return self; } - drawSelf: (NXRect*)rect: (int)count { int i; NXSize size; NXRect box; if (!data) return self; [window setContentView: self]; if (image) [image free]; /* image = [Bitmap newRect: &bounds type: NX_UNIQUEBITMAP window: window]; */ box.origin.x = 0; box.origin.y = 0; box.size.width = bounds.size.width; box.size.height = bounds.size.height; image = [Bitmap newSize: box.size.width: box.size.height type: NX_UNIQUEBITMAP]; [image image: data toRect: &bounds width: [n1 intValue] height: [n2 intValue] bps: 8 spp: 1]; [image composite: NX_COPY toPoint: &bounds.origin]; [image getSize: &size]; return self; } - newdata: sender { int i, n; if (!strcmp ([file stringValue],"")) { [form selectTextAt: 0]; [self rattle]; return self; } if (! [n1 intValue]) { [form selectTextAt: 1]; [self rattle]; return self; } if (! [n2 intValue]) { [form selectTextAt: 2]; [self rattle]; return self; } [panel orderOut: self]; n = [n1 intValue] * [n2 intValue]; if (data) free (data); data = (char *) malloc (n); read (open ([file stringValue],0),data,n); [window setTitle: [file stringValue]]; [window orderFront: sender]; [self display]; return self; } - rattle { NXRect rect; [panel orderFront: self]; [panel getFrame: &rect]; [panel moveTo: rect.origin.x-5: rect.origin.y]; [panel moveTo: rect.origin.x+5: rect.origin.y]; [panel moveTo: rect.origin.x-5: rect.origin.y]; return self; } char *types[] = {".H",""}; - openData: sender { id openPanel; char File[40]; int N1, N2; openPanel = [OpenPanel new]; if ([openPanel runModalForTypes: types] == TRUE) { GetparFile ([openPanel filename]); if (getpar ("in","s",File)) [file setStringValue: File]; if (getpar ("n1","d",&N1)) [n1 setIntValue: N1]; if (getpar ("n2","d",&N2)) [n2 setIntValue: N2]; [self newdata]; } [openPanel free]; return self; } @end >From: jpd00964@uxa.cso.uiuc.edu

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Marcel Waldvogel and Netfuture.ch.