This is Mandel.m in view mode; [Download] [Up]
/* * Mandel.m, subclass of Object, Jan. 1992 * written by R. Pajarola * E-mail: rpajarol@iiic.ethz.ch */ #import "Mandel.h" #import <appkit/Application.h> #import <appkit/SavePanel.h> #import <appkit/NXBitmapImageRep.h> #import <streams/streams.h> @implementation Mandel - init { [super init]; /* Get the instance of a SavePanel */ savePanel = [SavePanel new]; return self; } /* Constrain window resizing. The following values are somewhat arbitrary; */ /* they need to depend on the window style, and the actual size of the view */ /* within the window. */ #define MINWIDTH 510 #define MINHEIGHT 580 - windowWillResize:window toSize:(NXSize *)size { if (size->width < MINWIDTH) size->width = MINWIDTH; if (size->height < MINHEIGHT) size->height = MINHEIGHT; return self; } - displayInfoPanel:sender { if (!infoPanel) [NXApp loadNibSection:"InfoPanel.nib" owner:self withNames:NO]; [infoPanel makeKeyAndOrderFront:NULL]; return self; } - displayHelpPanel:sender { if (!helpPanel) [NXApp loadNibSection:"HelpPanel.nib" owner:self withNames:NO]; [helpPanel makeKeyAndOrderFront:NULL]; return self; } - saveRequest:sender /* Get a correct filename with a .tiff extension. */ { const char *filename; [savePanel setRequiredFileType:"tiff"]; if (([savePanel runModal]) && (filename = [savePanel filename])) [self saveViewInPath:filename]; return self; } - saveViewInPath:(const char *)name /* Save method, implemented for the pictures computed by the MandelView * object. */ { int width, height, bps, spp; BOOL alpha, config; NXColorSpace space; unsigned char *data; id image; NXStream *stream; /* First allocate a new NXBitmapImageRep, then get the imagedata * from the MandelView object and init the NXBitmapImageRep with it. * Open a stream on a file(name), from the SavePanel, and save * a TIFF representation from the image on this stream. */ if ((image = [NXBitmapImageRep alloc]) != nil){ if ([myView getValues:&data :&width :&height :&bps :&spp :&alpha :&config :&space]) { [image initData:data pixelsWide:width pixelsHigh:height bitsPerSample:bps samplesPerPixel:spp hasAlpha:alpha isPlanar:config colorSpace:space bytesPerRow:(width*spp*bps/8) bitsPerPixel:(spp*bps)]; if ((stream = NXOpenMemory(NULL, 0, NX_WRITEONLY)) != NULL) { [image writeTIFF:stream]; NXSaveToFile(stream, name); NXCloseMemory(stream, NX_FREEBUFFER); } else NXRunAlertPanel("Stream error !", "Cannot open a stream.", NULL, NULL, NULL); } else NXRunAlertPanel("View error !", "No image computed.", NULL, NULL, NULL); [image free]; } else NXRunAlertPanel("Image error !", "Cannot allocate a BitmapImage.", NULL, NULL, NULL); return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.