<> <> <> <<>> DIRECTORY Imager, IO, Rope, SV2d, SV3d, SVModelTypes, SVRayTypes, SVSceneTypes; DisplayList3d: DEFINITIONS = BEGIN versionRope: Rope.ROPE; <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> Artwork: TYPE = SVModelTypes.Artwork; BoundHedron: TYPE = SVModelTypes.BoundHedron; Classification: TYPE = SVRayTypes.Classification; Color: TYPE = Imager.Color; CoordSystem: TYPE = SVModelTypes.CoordSystem; CSGTree: TYPE = SVRayTypes.CSGTree; Camera: TYPE = SVModelTypes.Camera; DrawStyle: TYPE = SVModelTypes.DrawStyle; -- {wire, shaded, rayCast, normals} FrameBox: TYPE = SVModelTypes.FrameBox; LightSource: TYPE = SVModelTypes.LightSource; Matrix4by4: TYPE = SV3d.Matrix4by4; Plane: TYPE = SV3d.Plane; Point2d: TYPE = SV2d.Point2d; Point3d: TYPE = SV3d.Point3d; PointSetOp: TYPE = SVRayTypes.PointSetOp; -- {union, intersection, difference} Poly3d: TYPE = SV3d.Poly3d; Primitive: TYPE = SVRayTypes.Primitive; Projection: TYPE = SVModelTypes.Projection; Ray: TYPE = SVRayTypes.Ray; Vector: TYPE = SV3d.Vector; <> <> Database: TYPE = SVSceneTypes.Database; Scene: TYPE = SVSceneTypes.Scene; Assembly: TYPE = SVSceneTypes.Assembly; ShowAsType: TYPE = SVSceneTypes.ShowAsType; Shape: TYPE = SVSceneTypes.Shape; ToolData: TYPE = SVSceneTypes.ToolData; FrameBlock: TYPE = SVSceneTypes.FrameBlock; AssemblyList: TYPE = SVSceneTypes.AssemblyList; LightSourceList: TYPE = SVSceneTypes.LightSourceList; FileCamera: TYPE = SVSceneTypes.FileCamera; FileCameraList: TYPE = SVSceneTypes.FileCameraList; <> MasterObjectClass: TYPE = SVSceneTypes.MasterObjectClass; MasterObjectClassList: TYPE = SVSceneTypes.MasterObjectClassList; MasterObject: TYPE = SVSceneTypes.MasterObject; MasterObjectList: TYPE = SVSceneTypes.MasterObjectList; FileoutProc: TYPE = SVSceneTypes.FileoutProc; FileinProc: TYPE = SVSceneTypes.FileinProc; FileoutPolyProc: TYPE = SVSceneTypes.FileoutPolyProc; RayCastProc: TYPE = SVSceneTypes.RayCastProc; RayCastNoBBoxesProc: TYPE = SVSceneTypes.RayCastNoBBoxesProc; RayCastBoundingSpheresProc: TYPE = SVSceneTypes.RayCastBoundingSpheresProc; BoundHedronProc: TYPE = SVSceneTypes.BoundHedronProc; PreprocessProc: TYPE = SVSceneTypes.PreprocessProc; LineDrawProc: TYPE = SVSceneTypes.LineDrawProc; NormalsDrawProc: TYPE = SVSceneTypes.NormalsDrawProc; CountPlanarSurfacesProc: TYPE = SVSceneTypes.CountPlanarSurfacesProc; GetPlanarSurfacesProc: TYPE = SVSceneTypes.GetPlanarSurfacesProc; PlanarSurface: TYPE = SVSceneTypes.PlanarSurface; PlanarSurfaceList: TYPE = SVSceneTypes.PlanarSurfaceList; DrawPlanarSurfaceProc: TYPE = SVSceneTypes.DrawPlanarSurfaceProc; DrawSubBoxesProc: TYPE = SVSceneTypes.DrawSubBoxesProc; DrawSubSpheresProc: TYPE = SVSceneTypes.DrawSubSpheresProc; <> <> <> NoOpFilein: FileinProc; NoOpFileout: FileoutProc; NoOpFileoutPoly: FileoutPolyProc; NoOpRayCast: RayCastProc; NoOpRayCastNoBBoxes: RayCastNoBBoxesProc; NoOpRayCastBoundingSpheres: RayCastBoundingSpheresProc; NoOpBoundHedron: BoundHedronProc; NoOpPreprocess: PreprocessProc; NoOpLineDraw: LineDrawProc; NoOpNormalsDraw: NormalsDrawProc; NoOpCountPlanarSurfaces: CountPlanarSurfacesProc; NoOpGetPlanarSurfaces: GetPlanarSurfacesProc; NoOpDrawPlanarSurface: DrawPlanarSurfaceProc; NoOpDrawSubBoxes: DrawSubBoxesProc; NoOpDrawSubSpheres: DrawSubSpheresProc; <> <> <<>> RegisterMasterObjectClass: PROC [ name: Rope.ROPE, filein: FileinProc, fileout: FileoutProc, fileoutPoly: FileoutPolyProc, rayCast: RayCastProc, rayCastNoBBoxes: RayCastNoBBoxesProc, rayCastBoundingSpheres: RayCastBoundingSpheresProc, getHedron: BoundHedronProc, preprocess: PreprocessProc, lineDraw: LineDrawProc, normalsDraw: NormalsDrawProc, countSurf: CountPlanarSurfacesProc, getSurf: GetPlanarSurfacesProc, drawSurf: DrawPlanarSurfaceProc, drawSubBoxes: DrawSubBoxesProc, drawSubSpheres: DrawSubSpheresProc] RETURNS [moClass: MasterObjectClass]; <> RegisterMasterObject: PROC [mo: MasterObject]; <> <> <> CreateScene: PROC [name: Rope.ROPE] RETURNS [scene: Scene]; <> CreateEmptyScene: PROC [name: Rope.ROPE] RETURNS [scene: Scene]; <> CreateMasterObject: PROC [ name: Rope.ROPE, class: MasterObjectClass, mainBody: REF ANY, lineBody: REF ANY, shadeBody: REF ANY, rayCastBody: REF ANY] RETURNS [mo: MasterObject]; CopyMasterObject: PROC [mo: MasterObject] RETURNS [copy: MasterObject]; CreateSceneAssembly: PROC [name: Rope.ROPE, pointSetOp: PointSetOp, coordSys: CoordSystem, isTool: BOOL _ FALSE, toolData: ToolData _ NIL] RETURNS [assembly: Assembly]; <> CreateAndAddPrimitiveAssembly: PROC [name: Rope.ROPE, object: Rope.ROPE, size: Vector, scene: Scene, parent: Assembly, mat: Matrix4by4, artwork: Artwork _ NIL, isTool: BOOL _ FALSE, toolData: ToolData _ NIL] RETURNS [assembly: Assembly, masterObjectFound: BOOL, success: BOOL]; <> <> <> CreateAndAddClusterAssembly: PROC [name: Rope.ROPE, pointSetOp: PointSetOp _ union, scene: Scene, parent: Assembly, mat: Matrix4by4, isTool: BOOL _ FALSE, toolData: ToolData _ NIL] RETURNS [assembly: Assembly, success: BOOL]; <> AttemptToAddSubassemblyToPrimitive: SIGNAL; ConnectAssemblyToParent: PROC [assembly: Assembly, parent: Assembly]; <> CreatePrimitiveAtExistingCoordSys: PROC [name: Rope.ROPE, object: Rope.ROPE, size: Vector, scene: Scene, coordSys: CoordSystem, artwork: Artwork _ NIL, isTool: BOOL _ FALSE, toolData: ToolData _ NIL] RETURNS [assembly: Assembly, masterObjectFound: BOOL]; <> CreateClusterAssemblyAtExistingCoordSys: PROC [name: Rope.ROPE, pointSetOp: PointSetOp, scene: Scene, coordSys: CoordSystem, isTool: BOOL _ FALSE, toolData: ToolData _ NIL] RETURNS [assembly: Assembly]; <> CreateToolData: PROC [loX, hiX, loY, hiY, loZ, hiZ: REAL, plane: NAT, infinite: BOOL _ FALSE, clientData: REF ANY _ NIL] RETURNS [toolData: ToolData]; <> <<>> CreateAmbientLightSource: PROC [name: Rope.ROPE, color: Color] RETURNS [ls: LightSource]; CreateLightSource: PROC [name: Rope.ROPE, position: Point3d, color: Color] RETURNS [ls: LightSource]; CreateFileCamera: PROC [ name: Rope.ROPE, origin: Point3d, focusPoint: Point3d, slant: REAL, resolution: REAL, focalLength: REAL, projection: Projection, frame: FrameBox, clippingPlanes: LIST OF Plane, visibleAssemblies: LIST OF Rope.ROPE] RETURNS [fileCamera: FileCamera]; CreateCamera: PROC [worldCS: CoordSystem, screenCS: CoordSystem] RETURNS [camera: Camera]; <> <<>> StuffCameraFromFileCamera: PROC [camera: Camera, fileCamera: FileCamera, style: DrawStyle]; <> <<>> InitialCameraList: PROC [] RETURNS [cameras: FileCameraList]; <> <> <> <> NameAlreadyPresent: SAFE SIGNAL; AddMasterObjectToScene: PROC [mo: MasterObject, scene: Scene]; <> AddLightSourceToScene: PROC [ls: LightSource, scene: Scene]; <> AddCameraToScene: PROC [fileCamera: FileCamera, scene: Scene]; <> AddCameraOrderNameToScene: PROC [name: Rope.ROPE, scene: Scene]; <> AddOrResizeToolToAssembly: PROC [assembly: Assembly, scene: Scene]; <> <> UniqueAssemblyNameFrom: PROC [name: Rope.ROPE, scene: Scene] RETURNS [unique: Rope.ROPE]; <> RenameAssembly: PROC [assem: Assembly, newName: Rope.ROPE, scene: Scene]; <> <<>> CopyAssemblyAndSonsRename: PROC [assembly: Assembly, scene: Scene, prefix: Rope.ROPE, parent: Assembly] RETURNS [copy: Assembly]; <> CopyAssemblyAndSonsNoRename: PROC [assembly: Assembly, newScene: Scene, parent: Assembly] RETURNS [copy: Assembly]; <> CopyAssemblyAndSonsUniqueNames: PROC [assembly: Assembly, oldScene: Scene, newScene: Scene, parent: Assembly] RETURNS [copy: Assembly]; <> MoveSubassembly: PROC [assem: Assembly, to: Assembly, scene: Scene]; MoveToFrontOfAssembly: PROC [subassembly: Assembly, assembly: Assembly, scene: Scene]; <> MergeAssemblyIntoScene: PROC [originalAssembly: Assembly, fromScene: Scene, parentAssembly: Assembly, toScene: Scene] RETURNS [copyAssembly: Assembly]; <> MergeSceneIntoScene: PROC [fromScene: Scene, toScene: Scene] RETURNS [success: BOOL]; <> SetArtworkAssembly: PROC [assembly: Assembly, artwork: Artwork, scene: Scene]; <> <> FindSceneFromName: PROC [name: Rope.ROPE] RETURNS [scene: Scene]; <> DatabaseEmpty: SIGNAL; SceneNotFound: SIGNAL; FindAssemblyFromName: PROC [name: Rope.ROPE, scene: Scene] RETURNS [assembly: Assembly, superAssembly: Assembly]; <> AssemblyNotFound: SIGNAL; AssemblyNameIsPresent: PROC [name: Rope.ROPE, scene: Scene] RETURNS [BOOL]; <> AnyNamesAlreadyPresent: PROC [assembly: Assembly, scene: Scene] RETURNS [BOOL]; <> <<>> <> NewNamesAlreadyPresent: PROC [assembly: Assembly, scene: Scene, prefix: Rope.ROPE] RETURNS [BOOL]; <> <> FindClassFromName: PROC [name: Rope.ROPE] RETURNS [moClass: MasterObjectClass, success: BOOL]; FindObjectFromName: PROC [name: Rope.ROPE, scene: Scene] RETURNS [object: MasterObject, success: BOOL]; ObjectNameIsPresent: PROC [name: Rope.ROPE, scene: Scene] RETURNS [BOOL]; CoordSysNameIsPresent: PROC [name: Rope.ROPE, scene: Scene] RETURNS [BOOL]; FindLightFromName: PROC [name: Rope.ROPE, scene: Scene] RETURNS [light: LightSource, success: BOOL]; LightSourceNameIsPresent: PROC [name: Rope.ROPE, scene: Scene] RETURNS [BOOL]; FindFileCameraFromName: PROC [name: Rope.ROPE, scene: Scene] RETURNS [fileCamera: FileCamera, success: BOOL]; FileCameraNameIsPresent: PROC [name: Rope.ROPE, scene: Scene] RETURNS [BOOL]; UniqueObjectNameFrom: PROC [name: Rope.ROPE, scene: Scene] RETURNS [unique: Rope.ROPE]; <> <> <> GetSceneGenerator: PROC RETURNS [g: SceneGenerator]; <> SceneGenerator: TYPE = REF SceneGeneratorObj; SceneGeneratorObj: TYPE = RECORD [currentPtr: LIST OF Scene]; NextScene: PROC [g: SceneGenerator] RETURNS [scene: Scene]; <> GetCoordSysGenerator: PROC [scene: Scene] RETURNS [g: CoordSysGenerator]; <> CoordSysGenerator: TYPE = REF CoordSysGeneratorObj; CoordSysGeneratorObj: TYPE = RECORD[currentPtr: LIST OF CoordSystem]; NextCoordSys: PROC [g: CoordSysGenerator] RETURNS [cs: CoordSystem]; <> GetAssemblyGenerator: PROC [scene: Scene] RETURNS [g: AssemblyGenerator]; <> AssemblyGenerator: TYPE = REF AssemblyGeneratorObj; AssemblyGeneratorObj: TYPE = RECORD[currentPtr: LIST OF Assembly]; NextAssembly: PROC [g: AssemblyGenerator] RETURNS [a: Assembly]; <> GetLightSourceGenerator: PROC [scene: Scene] RETURNS [g: LightSourceGenerator]; <> LightSourceGenerator: TYPE = REF LightSourceGeneratorObj; LightSourceGeneratorObj: TYPE = RECORD [currentPtr: LightSourceList]; NextLight: PROC [g: LightSourceGenerator] RETURNS [ls: LightSource]; <> GetMasterObjectClassGenerator: PROC [scene: Scene] RETURNS [g: MasterObjectClassGenerator]; MasterObjectClassGenerator: TYPE = REF MasterObjectClassGeneratorObj; MasterObjectClassGeneratorObj: TYPE = RECORD [ currentPtr: MasterObjectClassList]; NextClass: PROC [g: MasterObjectClassGenerator] RETURNS [moClass: MasterObjectClass]; <> MasterObjectsOfScene: PROC [scene: Scene] RETURNS [l: MasterObjectList]; MasterObjectsOfAssembly: PROC [assembly: Assembly, scene: Scene] RETURNS [l: MasterObjectList]; <> ListOfPrimAssemblies: PROC [assembly: Assembly, scene: Scene] RETURNS [primList: LIST OF Assembly]; <> <> <> DeleteMasterObjectNamed: PROC [moName: Rope.ROPE, scene: Scene] RETURNS [found: BOOL]; DeleteMasterObjectIfUnused: PROC [mo: MasterObject, scene: Scene] RETURNS [found: BOOL]; DeleteCoordSysAndChildren: PROC [cs: CoordSystem, scene: Scene]; DeleteLightSourceNamed: PROC [lsName: Rope.ROPE, scene: Scene]; ClearScene: PROC [scene: Scene]; <> ClearCoordSystems: PROC [scene: Scene]; <> ClearMasterObjects: PUBLIC PROC [scene: Scene]; <> DeleteSubassemblyFromAssembly: PROC [subassembly: Assembly, assembly: Assembly, scene: Scene _ NIL] RETURNS [success: BOOL]; <> DeleteAllPrimitivesOfClass: PROC [className: Rope.ROPE, scene: Scene]; <> DeleteAllAssembliesSittingOn: PROC [chair: Assembly, scene: Scene]; <> <> <> DrawScene: PROC [dc: Imager.Context, scene: Scene, camera: Camera]; <> DrawAssembly: PROC [dc: Imager.Context, assembly: Assembly, scene: Scene, camera: Camera]; <> END.