This is WozView.m in view mode; [Download] [Up]
/* Generated by Interface Builder */ #import "WozView.h" #import "hgrconv.h" #import <appkit/graphics.h> #import <defaults/defaults.h> #import <appkit/NXBitmapImageRep.h> #import <appkit/tiff.h> #import <string.h> @implementation WozView - initFrame:(const NXRect *) frameRect { #ifdef USE_COLOR NXRect newFrameRect; /* nib file view width is 576 (or 2 * 288) for greyscale. */ /* We need it to be only 280 * 2 or 560 for color */ newFrameRect.origin = frameRect->origin; newFrameRect.size = frameRect->size; newFrameRect.size.width = 560; [super initFrame:&newFrameRect]; #else USE_COLOR [super initFrame:frameRect]; #endif USE_COLOR memset (fbuf, 0, sizeof fbuf); /* Clear to black. */ return self; } - drawSelf:(const NXRect *) rects: (int) rectCount { const unsigned char *my_data[5] = { (unsigned char *)fbuf, (unsigned char *)NULL, (unsigned char *)NULL, (unsigned char *)NULL, (unsigned char *)NULL}; #ifndef USE_COLOR NXDrawBitmap(&bounds, 280, 192, 2, 1, 2, 70, NO, NO, NX_OneIsWhiteColorSpace, my_data); #else USE_COLOR NXDrawBitmap(&bounds, 280, 192, 2, 4, 8, 280, NO, YES, NX_RGBColorSpace, my_data); #endif USE_COLOR return self; } - drawChangedAreas:(const unsigned char *) a2_screen shadow:(unsigned char *) a2_shadow { unsigned char changed[192 / 16]; NXRect r = bounds; int i, start, height; //#ifdef USE_COLOR // r.origin.x -= 7 * 2.0; //#endif USE_COLOR [self lockFocus]; /* Find out what areas changed, if any. */ if (find_changed_areas (a2_screen, a2_shadow, changed)) { for (i = 0; i < sizeof changed; i++) if (changed[i]) { start = i * 16; for (i++; i < sizeof changed && changed[i]; i++); height = i * 16 - start; r.origin.y = (192 - (start + height)) * 2.0; r.size.height = height * 2.0; /* * 2.0 since we are scaled. */ apple_to_next (a2_screen, fbuf, start, height); { const unsigned char *my_data[5] = { (unsigned char *)&fbuf[start][0], (unsigned char *)NULL, (unsigned char *)NULL, (unsigned char *)NULL, (unsigned char *)NULL}; #ifndef USE_COLOR NXDrawBitmap(&r, 288, height, 2, 1, 2, 72, NO, NO, NX_OneIsWhiteColorSpace, my_data ); #else USE_COLOR // NXDrawBitmap(&r, 288, height, 2, 4, 8, 288, NO, YES, // NX_RGBColorSpace, my_data ); NXDrawBitmap(&r, 280, height, 2, 4, 8, 280, NO, YES, NX_RGBColorSpace, my_data ); #endif USE_COLOR } } copy_changed_areas (a2_screen, a2_shadow, changed); } [self unlockFocus]; return self; } - (unsigned char *) data { return &fbuf[0][0]; } - appDidInit:(id) sender { void simulator_main(int argc,char **argv); extern id screen_wozview; extern unsigned char *wozview_buf; screen_wozview = self; wozview_buf = &fbuf[0][0]; simulator_main (NXArgc, NXArgv); return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.