This is View3D.m in view mode; [Download] [Up]
/* View3D.m */ #import "View3D.h" #import "Transformation3D.h" #import "Context3D.h" #import <objc/List.h> @implementation View3D + new { self = [super new]; subviews=[List new]; superview=nil; return self; } - moveto:(vector3D *)where { [transformation operateOn:where]; [superview moveto:where]; return self; } - lineto:(vector3D *)where { [transformation operateOn:where]; [superview lineto:where]; return self; } - polygon:(vector3D *)vertices howMany:(int)count { [transformation operateOn:vertices howMany:count]; [superview polygon:vertices howMany:count]; return self; } - superview { return superview; } - setSuperView:aView3D { superview=aView3D; return self; } - addSubView:aView3D { [aView3D setSuperView:self]; [subviews addObjectIfAbsent:aView3D]; return self; } - render { return self; } - display { [self render]; [subviews makeObjectsPerform:@selector(display)]; return self; } - transformation { return transformation; } - setTransformation:anObject { transformation=anObject; } - subviews { return subviews; } - free { [transformation free]; [subviews freeObjects]; [subviews free]; return [super free]; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.