home *** CD-ROM | disk | FTP | other *** search
- // copyright 1993 Michael B. Johnson; some portions copyright 1994, MIT
- // see COPYRIGHT for reuse legalities
- //
-
- #import <appkit/appkit.h>
- #import <3Dkit/3Dkit.h>
- #import <sys/time.h>
-
- @interface WW3DWell:View
- {
- NXRect bezelRect;
- NXRect wellRect;
- id camera;
- id ribParser;
- id statusText;
- int statusBufSize;
- char *statusBuf;
- id delegate;
- id imageView;
- id imageViewWindow;
- BOOL reuseImageView;
- BOOL useRendribInstead;
- BOOL beepWhenDone;
- List *imageViewWindowList;
- BOOL edgeClicked;
- int renderJobTag;
-
- NXColor selectedColor, unselectedColor;
- NXColor sendTextColor, replyTextColor;
-
- struct
- timeval renderStartTime, renderFinishTime;
- char timeBuf[128];
-
- // control panel stuff
- id renderHistoryText;
- id wellControlPanel;
- id shapeBrowser;
- id ignoreShadingRateSwitch;
- id ignoreColorsSwitch;
- id ignoreLightsSwitch;
- id ignoreShadersSwitch;
- id firmTransformsSwitch;
- id treatAttributeBeginLikeStartShapeSwitch;
- id treatTransformBeginLikeAttributeBeginSwitch;
- id applyShadersDirectlyToCurrentShapeSwitch;
- BOOL fixedAspectRatio;
- float aspectRatio;
- int aspectRatioType;
- id aspectRatioMatrix;
- id customAspectRatioText;
- id lowRezTesselationText;
- id tesselationText;
- id fovSlider;
- id fovText;
- id shadingRateSlider;
- id shadingRateText;
- id selectedColorWell;
- id unselectedColorWell;
- N3DProjectionType projectionType;
- id projectionTypeMatrix;
- id trackballAffectsMatrix;
- id trackballXYZMatrix;
-
- id renderWorldAsBoxSwitch;
- id renderCurrentAsBoxSwitch;
- id worldIsVisibleSwitch;
- id currentIsVisibleSwitch;
-
- id wellControlPanelSwitchView;
- id backgroundColorWell;
-
- id shapeInterpTextField;
- id shapeHistoryText;
- id cameraInterpTextField;
- id cameraHistoryText;
-
- id drawOriginForSelectedShapeSwitch;
- id showSelectedShapeSwitch;
- id renderStyleMatrix;
- id movingRenderStyleMatrix;
-
- // detailed camera stuff
- id focalLengthText;
- id focalDistanceText;
- id fStopText;
- id exposureLengthText;
-
- id shotOutputTypeMatrix;
- id shotLengthText;
- id framesPerSecondText;
- id totalFrameCountText;
- id frameNumberText;
- id shotStartTimeText;
- id exposureLengthSlider;
- id exposureLengthPercentageText;
- id exposureLengthStrobeSwitch; // corresponds to an exposurePercentage of 0.0
- id exposureLengthFilmSwitch; // corresponds to an exposurePercentage of 0.5
- id exposureLengthVideoSwitch; // corresponds to an exposurePercentage of 1.0
-
- // old light inspector panel stuff
- id ambientLightState;
- id ambientLightColor;
- id ambientLightIntensity;
- id ambientLightIntensityText;
- id leftLightState;
- id leftLightColor;
- id leftLightIntensity;
- id leftLightIntensityText;
- id rightLightState;
- id rightLightColor;
- id rightLightIntensity;
- id rightLightIntensityText;
-
- // new light inspector panel stuff
- id lightNameMatrix;
- id distantLightView;
- id pointLightView;
- id spotLightView;
- id shaderLightView;
- id lightInspectorCamera;
- id lightInspectorTrackballAffectsMatrix;
- id lightIntensityColorSlider;
- id lightIntensityText;
- id lightConeAngle;
- id lightConeDelta;
- id lightBeamDistribution;
- id lightCastsShadow;
- id lightShaderAttributeMatrix;
-
- // surface shader stuff
- id suParmScrollView;
- id suParmNameMatrix;
- id suParmView;
- id suNameText;
- List *suArgViewList;
-
- // surface shader stuff
- id diParmScrollView;
- id diParmNameMatrix;
- id diParmView;
- id diNameText;
- List *diArgViewList;
-
- // surface transform stuff
- id boundingBoxMatrix;
- id transformMatrix;
- id ribCommandsMatrix;
- id ribCommandInspectorPanel;
-
- // new camera inspector stuff
- id eyePointMatrix;
- id viewPointMatrix;
- id rollAngleText;
- id cameraTransformMatrix;
- id binaryRIBSwitch;
- id reuseImageViewSwitch;
- id useRendribInsteadSwitch;
- id beepWhenDoneSwitch;
- BOOL cameraInspectorInvalid;
-
- // windows that should be freed...
- id z_infoWindow;
- id z_cameraWindow;
- id z_shapeWindow;
- id z_lightWindow;
- id z_tclWindow;
- id z_ribWindow;
-
- // new scene stuff...
- id sceneClock;
-
- id sceneClockControlPanel;
- id sceneClockTimeText;
- id sceneClockSamplesPerSecondText;
- id sceneClockIncrementText;
- id sceneClockSkipText;
- id sceneClockRatioText;
- id sceneClockButtonMatrix;
- id sceneClockMarkText;
- }
-
- - renderItUsing3DKit:sender;
- - renderItBlocking:sender;
- - saveImage:sender;
- - dumpRIB:sender;
- - dumpShot:sender;
- - dumpEve:sender;
- - dumpScene:sender;
- - dump3DTextScene:sender;
- - dumpInventor:sender;
-
- - takeStatusText:sender;
-
- - (BOOL)binaryRIB;
- - setBinaryRIB:(BOOL)n;
- - takeBinaryRIB:sender;
-
- - (BOOL)reuseImageView;
- - setReuseImageView:(BOOL)n;
- - takeReuseImageView:sender;
-
- - (BOOL)useRendribInstead;
- - setUseRendribInstead:(BOOL)n;
- - takeUseRendribInstead:sender;
-
- - (BOOL)beepWhenDone;
- - setBeepWhenDone:(BOOL)n;
- - takeBeepWhenDone:sender;
-
- - shape;
- - camera;
- - parser;
-
- - imageView;
-
- - empty:sender;
-
- - setWorldShape:aShape;
- - buildNewShapeHierarchyFromRIBFile:(const char *)filename;
- - addToShapeHierarchyFromRIBFile:(const char *)filename;
- - buildNewShapeHierarchyFromEveFile:(const char *)filename;
- - addToShapeHierarchyFromEveFile:(const char *)filename;
- - evaluateEveFile:(const char *)filename;
- - readMdlTemplateFile:(const char *)filename;
- - buildNewShapeHierarchyFromMdlFile:(const char *)filename;
- - addToShapeHierarchyFromMdlFile:(const char *)filename;
- - addToShapeHierarchyFromSceneFile:(const char *)filename;
- - buildNewShapeHierarchyFromSceneFile:(const char *)filename;
- - loadNibForModelInterp:(const char *)nibFilename;
- - loadNibForCameraInterp:(const char *)nibFilename;
-
- - setCurrentShape:newShape;
-
- - revertShapeInspectorFor:newShape;
- - revertSurfaceShaderInspectorFor:shader;
- - revertDisplacementShaderInspectorFor:shader;
- - takeSuColor:sender;
- - takeDiColor:sender;
- - drawRtMatrix:(RtMatrix)anRtMatrix inMatrix:aMatrix;
- - fillRIBCommandsMatrix:theMatrix;
-
- - revertControlPanel;
-
- // delegate should implement:
- - wellWasUpdated:well;
- - sceneWasUpdated:well;
-
- - setRenderStartTime;
-
- - addShape:sender;
- - replaceWorldShape:sender;
- - addShader:sender;
- - addSurfaceShader:sender;
- - addDisplacementShader:sender;
- - removeSurfaceShader:sender;
- - removeDisplacementShader:sender;
- - setCurrentShapeTransformMatrixToIdentity:sender;
- - takeCurrentShapeTransformMatrix:sender;
-
- - turnOffCropWindow;
-
- - takeFirmTransforms:sender;
- - takeTrackballAffectsFromMatrix:sender;
- - takeTrackballXYZFromMatrix:sender;
- - takeLowRezTesselation:sender;
- - takeTesselation:sender;
- - takeShadingRate:sender;
- - takeIgnoreShadingRate:sender;
- - takeIgnoreColors:sender;
- - takeIgnoreLights:sender;
- - takeIgnoreShaders:sender;
- - setCustomAspectRatioText:newCustomAspectRatioText;
- - takeAspectRatioFromMatrix:sender;
- - takeAspectRatio:sender;
- - takeProjectionTypeFromMatrix:sender;
- - takeFOV:sender;
- - takeInitialGeometry:sender;
- - takeInitialImage:sender;
- - takeInitialImageFile:(const char *)n;
- - takeSelectedColor:sender;
- - takeUnselectedColor:sender;
-
- // new light stuff
- //- takeLightInspectorTrackballAffectsMatrix:sender;
- //- takeLightIntensityColorSlider:sender;
- //- takeLightIntensityText:sender;
- //- takeLightConeAngle:sender;
- //- takeLightConeDelta:sender;
- //- takeLightBeamDistribution:sender;
- //- takeLightCastsShadow:sender;
- //- takeLightShaderAttributeMatrix:sender;
-
- - removeDefaultLights:sender;
- - restoreDefaultLights:sender;
-
-
- - takeRenderWorldAsBox:sender;
- - takeRenderCurrentAsBox:sender;
- - takeWorldIsVisible:sender;
- - takeCurrentIsVisible:sender;
- - takeWellBackgroundColor:sender;
- - takeTreatAttributeBeginLikeStartShape:sender;
- - takeTreatTransformBeginLikeAttributeBegin:sender;
- - takeApplyShadersDirectlyToCurrentShape:sender;
-
- - sendStringToCamera:sender;
- - sendStringToShapes:sender;
-
- - takeShowSelectedShape:sender;
- - takeDrawOriginForSelectedShape:sender;
- - takeRenderStyleFromMatrix:sender;
- - takeMovingRenderStyleFromMatrix:sender;
-
- - (BOOL)renderWorldAsBox;
- - (BOOL)renderCurrentAsBox;
- - (BOOL)worldIsVisible;
- - (BOOL)currentIsVisible;
-
- - (BOOL)treatTransformBeginLikeAttributeBegin;
- - (BOOL)ambientLightState;
- - (RtFloat)ambientLightIntensity;
- - (NXColor)ambientLightColor;
- - (BOOL)leftLightState;
- - (RtFloat)leftLightIntensity;
- - (NXColor)leftLightColor;
- - (BOOL)rightLightState;
- - (RtFloat)rightLightIntensity;
- - (NXColor)rightLightColor;
-
- - (NXColor)backgroundColor;
- - (NXColor)selectedColor;
- - (NXColor)unselectedColor;
- - (RtFloat)tesselation;
- - (RtFloat)lowRezTesselation;
- - (RtFloat)shadingRate;
- - (BOOL)firmTransforms;
- - (BOOL)ignoreShadingRate;
- - (BOOL)ignoreColors;
- - (BOOL)ignoreShaders;
- - (BOOL)ignoreLights;
- - (float)fov;
- - (int)aspectRatioType;
- - (float)aspectRatio;
- - (N3DProjectionType)projectionType;
-
-
- - updateCameraInspector:sender;
- - cameraParametersWereUpdated:sender;
-
- // window delegate method(s)
- - windowWillResize:sender toSize:(NXSize *)frameSize;
-
- // delegate methods
- - sceneWasUpdated:camera;
- - controlsWereUpdated:camera;
-
-
- // scene clock informal protocol
- - increment:sender;
- - decrement:sender;
- - fastForward:sender;
- - increment:sender;
- - pause:sender;
- - play:sender;
- - rewind:sender;
- - synchCameraToSceneClock;
-
- // UI binding stuff back at the scene clock
- - takeSceneClockTime:sender;
- - takeSceneClockSamplesPerSecond:sender;
- - takeSceneClockIncrement:sender;
- - takeSceneClockSkip:sender;
- - takeSceneClockRatio:sender;
- - takeSceneClockMark:sender;
- - takeMark:sender;
- - findLastSampleAndSetMark:sender;
-
- - revertSceneClockInspector;
-
- // more camera UI stuff
- - takeFocalLength:sender;
- - takeFocalDistance:sender;
- - takeFStop:sender;
- - takeExposureLength:sender;
-
- - takeShotOutputTypeFromMatrix:sender;
- - takeShotLength:sender;
- - takeFramesPerSecond:sender;
- - takeFrameNumber:sender;
-
- - takeExposureLengthFactor:sender;
- - takeExposureLengthPercentage:sender;
- - takeShotStartTime:sender;
- - takeExposureLengthAsStrobe:sender;
- - takeExposureLengthAsFilm:sender;
- - takeExposureLengthAsVideo:sender;
-
- // new camera stuff
- - takeEyePoint:sender;
- - takeRollAngle:sender;
- - takeLookAt:sender;
- - setCameraPreTransformMatrixToIdentity:sender;
- - takeCameraPreTransformMatrix:sender;
-
-
- @end
-