<> <> <> <<>> DIRECTORY AtomButtonsTypes, Imager, IO, Rope, SV2d, SV3d, SVBasicTypes, SVModelTypes, SVSceneTypes, ViewerClasses; SVScene: CEDAR DEFINITIONS = BEGIN versionRope: Rope.ROPE; version: REAL; <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> Artwork: TYPE = SVModelTypes.Artwork; BoundBlock: TYPE = SVBasicTypes.BoundBlock; BoundBox: TYPE = SVBasicTypes.BoundBox; BoundHedron: TYPE = SVBasicTypes.BoundHedron; Camera: TYPE = SVModelTypes.Camera; Classification: TYPE = SVSceneTypes.Classification; Color: TYPE = Imager.Color; CoordSystem: TYPE = SVModelTypes.CoordSystem; CSGTree: TYPE = SVSceneTypes.CSGTree; Database: TYPE = SVSceneTypes.Database; DrawStyle: TYPE = SVModelTypes.DrawStyle; -- {wire, shaded, rayCast, normals} FeedbackData: TYPE = AtomButtonsTypes.FeedbackData; FileCamera: TYPE = SVSceneTypes.FileCamera; FileCameraList: TYPE = SVSceneTypes.FileCameraList; FrameBlock: TYPE = SVSceneTypes.FrameBlock; FrameBox: TYPE = SVModelTypes.FrameBox; LightSource: TYPE = SVModelTypes.LightSource; LightSourceList: TYPE = SVSceneTypes.LightSourceList; MasterObject: TYPE = SVSceneTypes.MasterObject; MasterObjectClass: TYPE = SVSceneTypes.MasterObjectClass; MasterObjectClassList: TYPE = SVSceneTypes.MasterObjectClassList; MasterObjectList: TYPE = SVSceneTypes.MasterObjectList; Matrix4by4: TYPE = SV3d.Matrix4by4; Plane: TYPE = SV3d.Plane; Point2d: TYPE = SV2d.Point2d; Point3d: TYPE = SV3d.Point3d; PointSetOp: TYPE = SVSceneTypes.PointSetOp; -- {union, intersection, difference} Poly3d: TYPE = SV3d.Poly3d; Primitive: TYPE = SVSceneTypes.Primitive; Projection: TYPE = SVModelTypes.Projection; Ray: TYPE = SVSceneTypes.Ray; Scene: TYPE = SVSceneTypes.Scene; SelectionClass: TYPE = SVSceneTypes.SelectionClass; Shape: TYPE = SVSceneTypes.Shape; ShowAsType: TYPE = SVSceneTypes.ShowAsType; Slice: TYPE = SVSceneTypes.Slice; SliceList: TYPE = SVSceneTypes.SliceList; ToolData: TYPE = SVSceneTypes.ToolData; Vector3d: TYPE = SV3d.Vector3d; Viewer: TYPE = ViewerClasses.Viewer; <> <> 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: Slice]; <> 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, style: DrawStyle] RETURNS [camera: Camera]; <> <<>> StuffCameraFromFileCamera: PROC [camera: Camera, fileCamera: FileCamera, style: DrawStyle, scene: Scene]; <> <<>> InitialCameraList: PROC [] RETURNS [cameras: FileCameraList]; <> <<>> GetEyepoint: PROC [camera: Camera] RETURNS [eyePointWORLD: Point3d]; <> <> <> 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: Slice, scene: Scene]; <> <> UniqueAssemblyNameFrom: PROC [name: Rope.ROPE, scene: Scene] RETURNS [unique: Rope.ROPE]; <> RenameAssembly: PROC [assem: Slice, newName: Rope.ROPE, scene: Scene]; <> <<>> CopyAssemblyAndSonsRename: PROC [assembly: Slice, scene: Scene, prefix: Rope.ROPE, parent: Slice, feedback: FeedbackData] RETURNS [copy: Slice]; <> CopyAssemblyAndSonsNoRename: PROC [assembly: Slice, newScene: Scene, parent: Slice, feedback: FeedbackData] RETURNS [copy: Slice]; <> CopyAssemblyAndSonsUniqueNames: PROC [assembly: Slice, oldScene: Scene, newScene: Scene, parent: Slice, feedback: FeedbackData] RETURNS [copy: Slice]; <> MoveSubassembly: PROC [assem: Slice, to: Slice, scene: Scene]; MoveToFrontOfAssembly: PROC [subassembly: Slice, assembly: Slice, scene: Scene]; <> MergeAssemblyIntoScene: PROC [originalAssembly: Slice, fromScene: Scene, parentAssembly: Slice, toScene: Scene, feedback: FeedbackData] RETURNS [copyAssembly: Slice]; <> MergeSceneIntoScene: PROC [fromScene: Scene, toScene: Scene, feedback: FeedbackData] RETURNS [success: BOOL]; <> SetArtworkAssembly: PROC [assembly: Slice, 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: Slice, superAssembly: Slice, success: BOOL]; <> AssemblyNotFound: SIGNAL; AssemblyNameIsPresent: PROC [name: Rope.ROPE, scene: Scene] RETURNS [BOOL]; <> AnyNamesAlreadyPresent: PROC [assembly: Slice, scene: Scene] RETURNS [BOOL]; <> <<>> <> NewNamesAlreadyPresent: PROC [assembly: Slice, scene: Scene, prefix: Rope.ROPE] RETURNS [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]; PrimAssembliesInScene: PROC [scene: Scene] RETURNS [g: AssemblyGenerator]; AssemblyGenerator: TYPE = REF AssemblyGeneratorObj; AssemblyGeneratorObj: TYPE = RECORD[currentPtr: LIST OF Slice]; NextAssembly: PROC [g: AssemblyGenerator] RETURNS [a: Slice]; ListOfPrimAssemblies: PROC [assembly: Slice, scene: Scene] RETURNS [primList: LIST OF Slice]; <> <> 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: Slice, scene: Scene] RETURNS [l: MasterObjectList]; <> <> DeleteMasterObjectNamed: PROC [moName: Rope.ROPE, scene: Scene] RETURNS [found: BOOL]; MasterObjectIsUsed: PROC [mo: MasterObject, scene: Scene] RETURNS [used: 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: Slice, assembly: Slice, scene: Scene _ NIL] RETURNS [success: BOOL]; <> DeleteAllPrimitivesOfClass: PROC [className: Rope.ROPE, scene: Scene, feedback: FeedbackData]; <> DeleteAllAssembliesSittingOn: PROC [chair: Slice, scene: Scene]; <> DeleteAllSelected: PROC [scene: Scene, camera: Camera] RETURNS [bBox: BoundBox]; DeleteSlice: PROC [scene: Scene, slice: Slice]; -- doesn't deselect slice from the normal selected list <> <> DrawScene: PROC [dc: Imager.Context, scene: Scene, camera: Camera, except: Slice _ NIL]; <> <> SaveSelections: PROC [scene: Scene]; RestoreSelections: PROC [scene: Scene]; SelectInBlock: PROC [scene: Scene, block: BoundBlock, selectClass: SelectionClass _ normal]; <> END.