<> <> <> <> <<>> DIRECTORY BitMap3d, Containers, Imager, ImagerFont, Rope, SV2d, SV3d, SVModelTypes, SVRayTypes, SVSceneTypes, SVSlices, ViewerClasses; SVInterfaceTypes: DEFINITIONS = BEGIN Assembly: TYPE = SVSceneTypes.Assembly; Camera: TYPE = SVModelTypes.Camera; Color: TYPE = Imager.Color; CoordSystem: TYPE = SVModelTypes.CoordSystem; CSGTree: TYPE = SVRayTypes.CSGTree; Matrix4by4: TYPE = SV3d.Matrix4by4; Path: TYPE = SV2d.Path; Point2d: TYPE = SV2d.Point2d; Point3d: TYPE = SV3d.Point3d; PointSetOp: TYPE = SVRayTypes.PointSetOp; Primitive: TYPE = SVRayTypes.Primitive; Scene: TYPE = SVSceneTypes.Scene; Slice: TYPE = SVSlices.Slice; Vector: TYPE = SV3d.Vector; Viewer: TYPE = ViewerClasses.Viewer; <> SolidContainer: TYPE = Viewer; ViewerToolData: TYPE = REF ViewerToolDataObj; <> ViewerToolDataObj: TYPE = RECORD [ outer: SolidContainer _ NIL, height: CARDINAL _ 0, textSection: ViewerTextData, viewerPicture: Viewer _ NIL, editToolData: EditToolData, yBounded: LIST OF Viewer _ NIL, -- used in SVViewerToolImpl for viewer resizing. xBounded: LIST OF Viewer _ NIL, proc: PROC [dc: Imager.Context], scene: Scene, -- the collection of 3d objects we are looking at tree: CSGTree, -- for efficiency we will occasional cache the (viewpoint dependent) ray tracing tree treeOutOfDate: BOOL _ TRUE, -- the cached tree no longer represents this view accurately. dragAssembly: Assembly _ NIL, -- The corresponding assembly (if any). dragPlaneDepth: REAL, -- in Target coordinates dragCameraVector: Vector, dragTarget: Assembly _ NIL, camera: Camera, -- our point of view sceneStyleIndex: NAT, -- corresponds to camera.style baseCS: CoordSystem, -- **** mode: InteractionMode, showCoordSys: BOOL, doubleBuffer: BOOL, altDC: BitMap3d.AlternateDisplayContext, -- for double buffering entire scenes xorDC: BitMap3d.AlternateDisplayContext -- for buffering shapes to be xor'ed into a picture ]; ViewerTextData: TYPE = RECORD [ activateLabel: Viewer _ NIL, viewStyle: Viewer _ NIL, ais: Viewer _ NIL, text: Viewer _ NIL, xyz: Viewer _ NIL, focalLength: Viewer _ NIL, projection: Viewer _ NIL, selected: Viewer _ NIL, isSelected: BOOL ]; InteractionMode: TYPE = {select, cast}; DCProc: TYPE = PROC [Imager.Context]; <> EditToolData: TYPE = REF EditToolDataObj; EditToolDataObj: TYPE = RECORD [ outer: Containers.Container _ NIL, height: CARDINAL _ 0, font: ImagerFont.Font, sceneSection: CurrentSceneSectionData, sphereSection: SphereSectionData, blockSection: BlockSectionData, cylinderSection: CylinderSectionData, coneSection: ConeSectionData, torusSection: TorusSectionData, linSection: LinSectionData, transformSection: TransformSectionData, cameraSection: CameraSectionData, cameraOrderSection: CameraOrderSectionData, shadowSection: ShadowSectionData, artworkSection: ArtworkSectionData, artworkTransformSection: ArtworkTransformSectionData, lightSection: LightSectionData, utilitySection: UtilitySectionData, scratchpad: Viewer, artworkTool: Viewer, messages: Viewer, allViewers: LIST OF ViewerCell, currentViewerToolData: ViewerToolData, -- to ward off compilation dependencies, originalWorkingDirectory: Rope.ROPE ]; ViewerCell: TYPE = REF ViewerCellObj; ViewerCellObj: TYPE = RECORD [ scene: Scene, viewersOnScene: Viewer]; -- viewersOnScene is a list of viewers since each viewer has a link to the next one. CurrentSceneSectionData: TYPE = RECORD [ defaultScene: Scene, currentScene: Scene _ NIL, sceneName: Viewer _ NIL, current: Viewer _ NIL, text1: Viewer _ NIL, text2: Viewer _ NIL, source: Viewer _ NIL, target: Viewer _ NIL, new: Viewer _ NIL, parent: Viewer _ NIL, plane: Viewer _ NIL, opLabel: Viewer _ NIL, op: PointSetOp]; SphereSectionData: TYPE = RECORD [ radius: Viewer _ NIL]; BlockSectionData: TYPE = RECORD [ xyz: Viewer _ NIL]; CylinderSectionData: TYPE = RECORD [ radius: Viewer _ NIL, height: Viewer _ NIL]; ConeSectionData: TYPE = RECORD [ radius: Viewer _ NIL, height: Viewer _ NIL]; TorusSectionData: TYPE = RECORD [ bigRadius: Viewer _ NIL, sectionRadius: Viewer _ NIL]; LinSectionData: TYPE = RECORD [ depth: Viewer _ NIL]; TransformSectionData: TYPE = RECORD [ degrees: Viewer _ NIL, transXYZ: Viewer _ NIL, scaleXYZ: Viewer _ NIL, scalar: Viewer _ NIL]; CameraSectionData: TYPE = RECORD [ name: Viewer _ NIL, origin: Viewer _ NIL, focusPoint: Viewer _ NIL, slant: Viewer _ NIL, resolution: Viewer _ NIL, focalLength: Viewer _ NIL, projection: Viewer _ NIL, projectionValue: NAT _ 1, frame: Viewer _ NIL, clippingPlanes: Viewer _ NIL, visibleAssemblies: Viewer _ NIL]; CameraOrderSectionData: TYPE = RECORD [ order: Viewer _ NIL]; ShadowSectionData: TYPE = RECORD [ shadowLabel: Viewer _ NIL, shadowValue: BOOL _ FALSE]; ArtworkSectionData: TYPE = RECORD [ tubeHeight: Viewer _ NIL, tubeRadius: Viewer _ NIL, boxXYZ: Viewer _ NIL, picName: Viewer _ NIL, material: Viewer _ NIL, materialValue: NAT _ 1, resolution: Viewer _ NIL, isColor: Viewer _ NIL, rgb: Viewer _ NIL, oMapLabel: Viewer _ NIL]; ArtworkTransformSectionData: TYPE = RECORD [ degrees: Viewer _ NIL]; LightSectionData: TYPE = RECORD [ name: Viewer _ NIL, position: Viewer _ NIL, color: Viewer _ NIL]; UtilitySectionData: TYPE = RECORD [ stuffNum: Viewer _ NIL]; <> <<>> Skitter: TYPE = REF SkitterObj; SkitterObj: TYPE = RECORD [ alive: BOOL, cameraPoint: Point2d, assembly: Assembly, primitive: Primitive, skitterWORLD: Matrix4by4, viewerToolData: ViewerToolData, mode: SkitterMode]; SkitterMode: TYPE = {surface, tightrope, coordframe}; SearchDepth: TYPE = {first, lastOfFirst, last, lastOfLevel1}; Selection: TYPE = REF SelectionObj; SelectionObj: TYPE = RECORD [ coincident: Assembly, -- the hook jack, floater jack, or sitting-in for coordSys referents. indirect: Assembly, -- the assembly we claim to be sitting on if we are a hook, NIL otherwise. viewerToolData: ViewerToolData, referentType: ReferentType, selectionType: SelectionType]; ReferentType: TYPE = {hook, coordSys}; SelectionType: TYPE = {target, movee, plane}; SelectionGenerator: TYPE = REF SelectionGeneratorObj; SelectionGeneratorObj: TYPE = RECORD [ currentPtr: LIST OF Selection ]; <> Artwork: TYPE = SVModelTypes.Artwork; ArtworkToolData: TYPE = REF ArtworkToolDataObj; ArtworkToolDataObj: TYPE = RECORD [ outer: Containers.Container _ NIL, editToolData: EditToolData, height: CARDINAL _ 0, picture: Viewer _ NIL, textSection: TextSectionData, origin: Point2d, scalar: REAL, proc: PROC [dc: Imager.Context], artwork: Artwork, paintColor: Color]; TextSectionData: TYPE = RECORD [ scalar: Viewer _ NIL, color: Viewer _ NIL ]; <> ScratchViewerData: TYPE = REF ScratchViewerDataObj; ScratchViewerDataObj: TYPE = RECORD [ outer: Containers.Container _ NIL, -- handle for the enclosing container height: CARDINAL _ 0, textSection: ScratchTextSectionData, scratchpad: ViewerClasses.Viewer _ NIL, editToolData: EditToolData ]; ScratchTextSectionData: TYPE = REF TextSectionDataObj; TextSectionDataObj: TYPE = RECORD [ degrees: ViewerClasses.Viewer _ NIL]; ScratchpadData: TYPE = REF ScratchpadDataObj; ScratchpadDataObj: TYPE = RECORD [ origin: Point2d, path: Path, slice: Slice, mode: ScratchpadMode, index: NAT, scratchViewerData: ScratchViewerData, proc: ImagerProc, imager: Imager.Context]; ImagerProc: TYPE = PROC [dc: Imager.Context]; ScratchpadMode: TYPE = {off, pointAt, drawLin, drawRevo, drawSlice}; <<>> <<>> END.