This is EmbeddedGraphic.m in view mode; [Download] [Up]
// EmbeddedGraphic.m // // a simple cell subclass that can be placed into a text object // // You may freely copy, distribute, and reuse the code in this example. // NeXT disclaims any warranty of any kind, expressed or implied, as to its // fitness for any particular use. #import "EmbeddedGraphic.h" #define THEDIRECTIVE "StevesEGraphic" @implementation EmbeddedGraphic //sent when the class receives its first message + initialize { [Text registerDirective:THEDIRECTIVE forClass:[EmbeddedGraphic class]]; return self; } - init { self = [super init]; image = [NXImage findImageNamed:"NXdefaulticon"]; fileName = NULL; return self; } - free { id tmpImage= [NXImage findImageNamed:"NXdefaulticon"]; if((image != nil) && (image != tmpImage)) [image free]; if(fileName != NULL) NX_FREE(fileName); return [super free]; } - setFile:(const char *)theFile { image = nil; if(theFile != NULL){ fileName = NXCopyStringBuffer(theFile); image = [[NXImage alloc] initFromFile:fileName]; if(image == nil) image = [NXImage findImageNamed:"NXdefaulticon"]; } if(image == nil) image = [NXImage findImageNamed:"NXdefaulticon"]; return self; } - calcCellSize:(NXSize *)theSize { if(image != nil) [image getSize:theSize]; return self; } - drawSelf:(const NXRect *)rect inView:view { NXPoint tmpPoint = {0.0,0.0}; [view getLocation:&tmpPoint ofCell:self];//view is the Text object tmpPoint.y += (rect->size).height;//the coordinates are flipped [image composite:NX_SOVER toPoint:&tmpPoint]; return self; } - highlight:(const NXRect *)rect inView:view lit:(BOOL)flag { return self; } - readRichText:(NXStream *)stream forView:view { char buffer[FILENAME_MAX+1]; NXScanf(stream,"%s\n",buffer); //reads in the path [self setFile:buffer]; return self; } - writeRichText:(NXStream *)stream forView:view { char buffer[FILENAME_MAX]; strcpy(buffer,fileName); NXPrintf(stream,"%s\n",buffer);//writes out the path return self; } - (BOOL)trackMouse:(NXEvent *)theEvent inRect:(const NXRect *)rect ofView:view { return NO; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.