This is chaosControl.m in view mode; [Download] [Up]
/* Generated by Interface Builder */ #import "chaosControl.h" #import "chaosView.h" #import "Colormap.h" #import "chaosStorage.h" #import <appkit/Cell.h> /* for floatValue, etc */ #import <appkit/Matrix.h> /* for selectedCell */ @implementation chaosControl - headhome :sender { float newX, newY, newDX, newDY; // New center and width/height int newDepth; [chaosViewInstance gohome: &newX: &newY: &newDX: &newDY: &newDepth]; [selectedXCenter setFloatValue:newX]; [selectedYCenter setFloatValue:newY]; [selectedXScale setFloatValue:newDX]; [selectedYScale setFloatValue:newDY]; [selectedDepth setFloatValue:newDepth]; return self; } - appDidInit :sender { float newX, newY, newDX, newDY; // New center and width/height int newDepth; [chaosMenuSelector chaosLoad:self]; [chaosViewInstance gohome: &newX: &newY: &newDX: &newDY: &newDepth]; [selectedXCenter setFloatValue:newX]; [selectedYCenter setFloatValue:newY]; [selectedXScale setFloatValue:newDX]; [selectedYScale setFloatValue:newDY]; [selectedDepth setFloatValue:newDepth]; [currentXCenter setFloatValue:newX]; [currentYCenter setFloatValue:newY]; [currentXScale setFloatValue:newDX]; [currentYScale setFloatValue:newDY]; [currentDepth setFloatValue:newDepth]; [myColormap setup:self]; [self colorZebra:self]; [viewWindow setContentView: chaosViewInstance]; return self; } - colorStorms:sender { return [myColormap setColors :3 :.5 :.4 :5 :.5 :.4 :1 :.87 :.87]; } - colorZebra:sender { return [myColormap setColors :5 :.5 :.5 :5 :.5 :.5 :5 :.5 :.5]; } - colorOasis:sender /* Courtesy of Jay Capela: great designer, great haircut */ { return [myColormap setColors :.66 :.854 :.46 :2.1 :.336 :.8 :2.0 :.576 :.5]; } - colorArctic:sender { return [myColormap setColors :.5 :0 :.88 :1.5 :0 :.5 :.5 :0 :.1]; } - colorGothic:sender { return [myColormap setColors :3 :.5 :.73 :3 :.74 :.87 :1.1 :.33 :.54]; } - colorDeco:sender { return [myColormap setColors :1 :.5 :.46 :5 :.5 :.8 :3 :.5 :.5]; } - upleft:sender { [chaosViewInstance scrollup]; [chaosViewInstance scrollleft]; return self; } - up:sender { [chaosViewInstance scrollup]; return self; } - upright:sender { [chaosViewInstance scrollup]; [chaosViewInstance scrollright]; return self; } - right:sender { [chaosViewInstance scrollright]; return self; } - downright:sender { [chaosViewInstance scrolldown]; [chaosViewInstance scrollright]; return self; } - down:sender { [chaosViewInstance scrolldown]; return self; } - downleft:sender { [chaosViewInstance scrolldown]; [chaosViewInstance scrollleft]; return self; } - left:sender { [chaosViewInstance scrollleft]; return self; } - changeSelectedRect:sender { return self; } - feedPoints:sender { return self; } - look:sender { [chaosViewInstance examinSelected:[selectedXCenter floatValue]: [selectedYCenter floatValue]: [selectedXScale floatValue]: [selectedYScale floatValue]: [selectedDepth intValue]]; return self; } - zoom:sender { [currentXCenter setFloatValue:[selectedXCenter floatValue]]; [currentYCenter setFloatValue:[selectedYCenter floatValue]]; [currentXScale setFloatValue:[selectedXScale floatValue]]; [currentYScale setFloatValue:[selectedYScale floatValue]]; [currentDepth setIntValue:[selectedDepth intValue]]; [self runstop:sender]; // This may just stop it...so if (!windowEvent) // If it's stopped run it again. [self runstop:sender]; return self; } - stopfeedPoints:sender { return self; } - selectedTextDidChange:sender { return self; } void dolines(DPSTimedEntry windowEventber, double now, void *theObject) { [(id)theObject drawline]; } - runstop:sender { if (windowEvent) { [runButton setTitle:"RUN"]; DPSRemoveTimedEntry (windowEvent); windowEvent=0; } else { [runButton setTitle:"STOP"]; [chaosViewInstance startM:[currentXCenter floatValue]: [currentYCenter floatValue]: [currentXScale floatValue]: [currentYScale floatValue]: [currentDepth intValue]]; windowEvent = DPSAddTimedEntry(0.0, &dolines, chaosViewInstance, 1 /*30*/); } return self; } - selectChaos: sender { id newChaosClass; NXRect theRect; [chaosViewInstance getFrame:&theRect]; if (windowEvent) [self runstop:self]; newChaosClass = [chaosMenuSelector accessViewList:self]; chaosViewInstance = [[newChaosClass alloc/*FromZone:[chaosViewInstance zone]*/] init]; newChaosClass = [viewWindow setContentView: chaosViewInstance]; [newChaosClass free]; [myColormap getnewChaosView:chaosViewInstance]; [chaosViewInstance getController: self: myColormap]; { float newX, newY, newDX, newDY; // New center and width/height int newDepth; [chaosViewInstance gohome: &newX: &newY: &newDX: &newDY: &newDepth]; [selectedXCenter setFloatValue:newX]; [selectedYCenter setFloatValue:newY]; [selectedXScale setFloatValue:newDX]; [selectedYScale setFloatValue:newDY]; [selectedDepth setFloatValue:newDepth]; [currentXCenter setFloatValue:newX]; [currentYCenter setFloatValue:newY]; [currentXScale setFloatValue:newDX]; [currentYScale setFloatValue:newDY]; [currentDepth setFloatValue:newDepth]; } return self; } - setParameters:(float) selX:(float) selY:(float) widthX:(float) heightY { [selectedXCenter setFloatValue:selX]; [selectedYCenter setFloatValue:selY]; [selectedXScale setFloatValue:widthX]; [selectedYScale setFloatValue:heightY]; [chaosControlWindow makeKeyAndOrderFront:self]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.