home *** CD-ROM | disk | FTP | other *** search
/ Stone Design / Stone Design.iso / Stone_Friends / Wave / WavesWorld / Source / IBPalettes / WW3DKit / WW3DWell.h < prev    next >
Encoding:
Text File  |  1995-03-23  |  10.4 KB  |  408 lines

  1. // copyright 1993 Michael B. Johnson; some portions copyright 1994, MIT
  2. // see COPYRIGHT for reuse legalities
  3. //
  4.  
  5. #import <appkit/appkit.h>
  6. #import <3Dkit/3Dkit.h>
  7. #import <sys/time.h>
  8.  
  9. @interface WW3DWell:View
  10. {
  11.   NXRect  bezelRect;
  12.   NXRect  wellRect;
  13.   id      camera;
  14.   id      ribParser;
  15.   id      statusText;
  16.   int     statusBufSize;
  17.   char    *statusBuf;
  18.   id      delegate;
  19.   id      imageView;
  20.   id      imageViewWindow;
  21.   BOOL    reuseImageView;
  22.   BOOL    useRendribInstead;
  23.   BOOL    beepWhenDone;
  24.   List    *imageViewWindowList;
  25.   BOOL    edgeClicked;
  26.   int     renderJobTag;
  27.  
  28.   NXColor  selectedColor, unselectedColor;
  29.   NXColor  sendTextColor, replyTextColor;
  30.  
  31.   struct
  32.     timeval  renderStartTime, renderFinishTime;
  33.   char       timeBuf[128];
  34.  
  35.   // control panel stuff
  36.   id      renderHistoryText;
  37.   id      wellControlPanel;
  38.   id      shapeBrowser;
  39.   id      ignoreShadingRateSwitch;
  40.   id      ignoreColorsSwitch;
  41.   id      ignoreLightsSwitch;
  42.   id      ignoreShadersSwitch;
  43.   id      firmTransformsSwitch;
  44.   id      treatAttributeBeginLikeStartShapeSwitch;
  45.   id      treatTransformBeginLikeAttributeBeginSwitch;
  46.   id      applyShadersDirectlyToCurrentShapeSwitch;
  47.   BOOL    fixedAspectRatio;
  48.   float   aspectRatio;
  49.   int     aspectRatioType;
  50.   id      aspectRatioMatrix;
  51.   id      customAspectRatioText;
  52.   id      lowRezTesselationText;
  53.   id      tesselationText;
  54.   id      fovSlider;
  55.   id      fovText;
  56.   id      shadingRateSlider;
  57.   id      shadingRateText;
  58.   id      selectedColorWell;
  59.   id      unselectedColorWell;
  60.   N3DProjectionType  projectionType;
  61.   id                 projectionTypeMatrix;
  62.   id                 trackballAffectsMatrix;
  63.   id                 trackballXYZMatrix;
  64.  
  65.   id      renderWorldAsBoxSwitch;
  66.   id      renderCurrentAsBoxSwitch;
  67.   id      worldIsVisibleSwitch;
  68.   id      currentIsVisibleSwitch;
  69.  
  70.   id      wellControlPanelSwitchView;
  71.   id      backgroundColorWell;
  72.  
  73.   id      shapeInterpTextField;
  74.   id      shapeHistoryText;
  75.   id      cameraInterpTextField;
  76.   id      cameraHistoryText;
  77.  
  78.   id      drawOriginForSelectedShapeSwitch;
  79.   id      showSelectedShapeSwitch;
  80.   id      renderStyleMatrix;
  81.   id      movingRenderStyleMatrix;
  82.  
  83.   // detailed camera stuff
  84.   id      focalLengthText;
  85.   id      focalDistanceText;
  86.   id      fStopText;
  87.   id      exposureLengthText;
  88.  
  89.   id      shotOutputTypeMatrix;
  90.   id      shotLengthText;
  91.   id      framesPerSecondText; 
  92.   id      totalFrameCountText;
  93.   id      frameNumberText;
  94.   id      shotStartTimeText;
  95.   id      exposureLengthSlider; 
  96.   id      exposureLengthPercentageText; 
  97.   id      exposureLengthStrobeSwitch; // corresponds to an exposurePercentage of 0.0
  98.   id      exposureLengthFilmSwitch;  // corresponds to an exposurePercentage of 0.5
  99.   id      exposureLengthVideoSwitch;  // corresponds to an exposurePercentage of 1.0
  100.  
  101.   // old light inspector panel stuff
  102.   id      ambientLightState;
  103.   id      ambientLightColor;
  104.   id      ambientLightIntensity;
  105.   id      ambientLightIntensityText;
  106.   id      leftLightState;
  107.   id      leftLightColor;
  108.   id      leftLightIntensity;
  109.   id      leftLightIntensityText;
  110.   id      rightLightState;
  111.   id      rightLightColor;
  112.   id      rightLightIntensity;
  113.   id      rightLightIntensityText;
  114.  
  115.   // new light inspector panel stuff
  116.   id      lightNameMatrix;
  117.   id      distantLightView;
  118.   id      pointLightView;
  119.   id      spotLightView;
  120.   id      shaderLightView;
  121.   id      lightInspectorCamera;
  122.   id      lightInspectorTrackballAffectsMatrix;
  123.   id      lightIntensityColorSlider;
  124.   id      lightIntensityText;
  125.   id      lightConeAngle;
  126.   id      lightConeDelta;
  127.   id      lightBeamDistribution;
  128.   id      lightCastsShadow;
  129.   id      lightShaderAttributeMatrix;
  130.  
  131.   // surface shader stuff
  132.   id    suParmScrollView;
  133.   id    suParmNameMatrix;
  134.   id    suParmView;
  135.   id    suNameText;
  136.   List  *suArgViewList;
  137.  
  138.   // surface shader stuff
  139.   id    diParmScrollView;
  140.   id    diParmNameMatrix;
  141.   id    diParmView;
  142.   id    diNameText;
  143.   List  *diArgViewList;
  144.  
  145.   // surface transform stuff
  146.   id    boundingBoxMatrix;
  147.   id    transformMatrix;
  148.   id    ribCommandsMatrix;
  149.   id    ribCommandInspectorPanel;
  150.  
  151.   // new camera inspector stuff
  152.   id    eyePointMatrix;
  153.   id    viewPointMatrix;
  154.   id    rollAngleText;
  155.   id    cameraTransformMatrix;
  156.   id    binaryRIBSwitch;
  157.   id    reuseImageViewSwitch;
  158.   id    useRendribInsteadSwitch;
  159.   id    beepWhenDoneSwitch;
  160.   BOOL  cameraInspectorInvalid;
  161.  
  162.   // windows that should be freed...
  163.   id    z_infoWindow;
  164.   id    z_cameraWindow;
  165.   id    z_shapeWindow;
  166.   id    z_lightWindow;
  167.   id    z_tclWindow;
  168.   id    z_ribWindow;
  169.  
  170.   // new scene stuff...
  171.   id     sceneClock;
  172.  
  173.   id  sceneClockControlPanel;
  174.   id  sceneClockTimeText;
  175.   id  sceneClockSamplesPerSecondText;
  176.   id  sceneClockIncrementText;
  177.   id  sceneClockSkipText;
  178.   id  sceneClockRatioText;
  179.   id  sceneClockButtonMatrix;
  180.   id  sceneClockMarkText;
  181. }
  182.  
  183. - renderItUsing3DKit:sender;
  184. - renderItBlocking:sender;
  185. - saveImage:sender;
  186. - dumpRIB:sender;
  187. - dumpShot:sender;
  188. - dumpEve:sender;
  189. - dumpScene:sender;
  190. - dump3DTextScene:sender;
  191. - dumpInventor:sender;
  192.  
  193. - takeStatusText:sender;
  194.  
  195. - (BOOL)binaryRIB;
  196. - setBinaryRIB:(BOOL)n;
  197. - takeBinaryRIB:sender;
  198.  
  199. - (BOOL)reuseImageView;
  200. - setReuseImageView:(BOOL)n;
  201. - takeReuseImageView:sender;
  202.  
  203. - (BOOL)useRendribInstead;
  204. - setUseRendribInstead:(BOOL)n;
  205. - takeUseRendribInstead:sender;
  206.  
  207. - (BOOL)beepWhenDone;
  208. - setBeepWhenDone:(BOOL)n;
  209. - takeBeepWhenDone:sender;
  210.  
  211. - shape;
  212. - camera;
  213. - parser;
  214.  
  215. - imageView;
  216.  
  217. - empty:sender;
  218.  
  219. - setWorldShape:aShape;
  220. - buildNewShapeHierarchyFromRIBFile:(const char *)filename;
  221. - addToShapeHierarchyFromRIBFile:(const char *)filename; 
  222. - buildNewShapeHierarchyFromEveFile:(const char *)filename;
  223. - addToShapeHierarchyFromEveFile:(const char *)filename; 
  224. - evaluateEveFile:(const char *)filename;
  225. - readMdlTemplateFile:(const char *)filename;
  226. - buildNewShapeHierarchyFromMdlFile:(const char *)filename;
  227. - addToShapeHierarchyFromMdlFile:(const char *)filename;
  228. - addToShapeHierarchyFromSceneFile:(const char *)filename;
  229. - buildNewShapeHierarchyFromSceneFile:(const char *)filename;
  230. - loadNibForModelInterp:(const char *)nibFilename;
  231. - loadNibForCameraInterp:(const char *)nibFilename;  
  232.  
  233. - setCurrentShape:newShape;
  234.  
  235. - revertShapeInspectorFor:newShape;
  236. - revertSurfaceShaderInspectorFor:shader;
  237. - revertDisplacementShaderInspectorFor:shader;
  238. - takeSuColor:sender;
  239. - takeDiColor:sender;
  240. - drawRtMatrix:(RtMatrix)anRtMatrix inMatrix:aMatrix;
  241. - fillRIBCommandsMatrix:theMatrix;
  242.  
  243. - revertControlPanel;
  244.  
  245. // delegate should implement:
  246. - wellWasUpdated:well;
  247. - sceneWasUpdated:well;
  248.  
  249. - setRenderStartTime;
  250.  
  251. - addShape:sender;
  252. - replaceWorldShape:sender;
  253. - addShader:sender;
  254. - addSurfaceShader:sender;
  255. - addDisplacementShader:sender;
  256. - removeSurfaceShader:sender; 
  257. - removeDisplacementShader:sender; 
  258. - setCurrentShapeTransformMatrixToIdentity:sender;
  259. - takeCurrentShapeTransformMatrix:sender;
  260.  
  261. - turnOffCropWindow;
  262.  
  263. - takeFirmTransforms:sender;
  264. - takeTrackballAffectsFromMatrix:sender;
  265. - takeTrackballXYZFromMatrix:sender;
  266. - takeLowRezTesselation:sender;
  267. - takeTesselation:sender;
  268. - takeShadingRate:sender; 
  269. - takeIgnoreShadingRate:sender;
  270. - takeIgnoreColors:sender;
  271. - takeIgnoreLights:sender;
  272. - takeIgnoreShaders:sender;
  273. - setCustomAspectRatioText:newCustomAspectRatioText;
  274. - takeAspectRatioFromMatrix:sender;
  275. - takeAspectRatio:sender;
  276. - takeProjectionTypeFromMatrix:sender;
  277. - takeFOV:sender;
  278. - takeInitialGeometry:sender;
  279. - takeInitialImage:sender;
  280. - takeInitialImageFile:(const char *)n;
  281. - takeSelectedColor:sender;
  282. - takeUnselectedColor:sender;
  283.  
  284. // new light stuff
  285. //- takeLightInspectorTrackballAffectsMatrix:sender;
  286. //- takeLightIntensityColorSlider:sender;
  287. //- takeLightIntensityText:sender;
  288. //- takeLightConeAngle:sender;
  289. //- takeLightConeDelta:sender;
  290. //- takeLightBeamDistribution:sender;
  291. //- takeLightCastsShadow:sender;
  292. //- takeLightShaderAttributeMatrix:sender;
  293.  
  294. - removeDefaultLights:sender;
  295. - restoreDefaultLights:sender;
  296.  
  297.  
  298. - takeRenderWorldAsBox:sender;
  299. - takeRenderCurrentAsBox:sender;
  300. - takeWorldIsVisible:sender;
  301. - takeCurrentIsVisible:sender;
  302. - takeWellBackgroundColor:sender;
  303. - takeTreatAttributeBeginLikeStartShape:sender;
  304. - takeTreatTransformBeginLikeAttributeBegin:sender;
  305. - takeApplyShadersDirectlyToCurrentShape:sender;
  306.  
  307. - sendStringToCamera:sender; 
  308. - sendStringToShapes:sender; 
  309.  
  310. - takeShowSelectedShape:sender;
  311. - takeDrawOriginForSelectedShape:sender;
  312. - takeRenderStyleFromMatrix:sender;
  313. - takeMovingRenderStyleFromMatrix:sender;
  314.  
  315. - (BOOL)renderWorldAsBox;
  316. - (BOOL)renderCurrentAsBox;
  317. - (BOOL)worldIsVisible;
  318. - (BOOL)currentIsVisible;
  319.  
  320. - (BOOL)treatTransformBeginLikeAttributeBegin;
  321. - (BOOL)ambientLightState;
  322. - (RtFloat)ambientLightIntensity;
  323. - (NXColor)ambientLightColor;
  324. - (BOOL)leftLightState;
  325. - (RtFloat)leftLightIntensity;
  326. - (NXColor)leftLightColor;
  327. - (BOOL)rightLightState;
  328. - (RtFloat)rightLightIntensity;
  329. - (NXColor)rightLightColor;
  330.  
  331. - (NXColor)backgroundColor;
  332. - (NXColor)selectedColor;
  333. - (NXColor)unselectedColor;
  334. - (RtFloat)tesselation;
  335. - (RtFloat)lowRezTesselation;
  336. - (RtFloat)shadingRate;
  337. - (BOOL)firmTransforms;
  338. - (BOOL)ignoreShadingRate;
  339. - (BOOL)ignoreColors;
  340. - (BOOL)ignoreShaders;
  341. - (BOOL)ignoreLights;
  342. - (float)fov;
  343. - (int)aspectRatioType;
  344. - (float)aspectRatio;
  345. - (N3DProjectionType)projectionType;
  346.  
  347.  
  348. - updateCameraInspector:sender;
  349. - cameraParametersWereUpdated:sender;
  350.  
  351. // window delegate method(s)
  352. - windowWillResize:sender toSize:(NXSize *)frameSize;
  353.  
  354. // delegate methods
  355. - sceneWasUpdated:camera;
  356. - controlsWereUpdated:camera;
  357.  
  358.  
  359. // scene clock informal protocol
  360. - increment:sender;
  361. - decrement:sender;
  362. - fastForward:sender;
  363. - increment:sender;
  364. - pause:sender;
  365. - play:sender;
  366. - rewind:sender;
  367. - synchCameraToSceneClock;
  368.  
  369. // UI binding stuff back at the scene clock
  370. - takeSceneClockTime:sender;
  371. - takeSceneClockSamplesPerSecond:sender;
  372. - takeSceneClockIncrement:sender;
  373. - takeSceneClockSkip:sender;
  374. - takeSceneClockRatio:sender;
  375. - takeSceneClockMark:sender;
  376. - takeMark:sender;
  377. - findLastSampleAndSetMark:sender;
  378.  
  379. - revertSceneClockInspector;
  380.  
  381. // more camera UI stuff
  382. - takeFocalLength:sender;
  383. - takeFocalDistance:sender;
  384. - takeFStop:sender;
  385. - takeExposureLength:sender;
  386.  
  387. - takeShotOutputTypeFromMatrix:sender;
  388. - takeShotLength:sender; 
  389. - takeFramesPerSecond:sender; 
  390. - takeFrameNumber:sender;
  391.  
  392. - takeExposureLengthFactor:sender;
  393. - takeExposureLengthPercentage:sender;
  394. - takeShotStartTime:sender;
  395. - takeExposureLengthAsStrobe:sender;
  396. - takeExposureLengthAsFilm:sender;
  397. - takeExposureLengthAsVideo:sender;
  398.  
  399. // new camera stuff
  400. - takeEyePoint:sender;
  401. - takeRollAngle:sender;
  402. - takeLookAt:sender;
  403. - setCameraPreTransformMatrixToIdentity:sender;
  404. - takeCameraPreTransformMatrix:sender;
  405.  
  406.  
  407. @end
  408.