<> <> <> <> <> <> <> <<>> DIRECTORY GGBasicTypes, GGModelTypes, GGSegmentTypes, Imager, ImagerTransformation, Rope; GGScene: CEDAR DEFINITIONS = BEGIN BoundBox: TYPE = GGModelTypes.BoundBox; BoundBoxGenerator: TYPE = GGModelTypes.BoundBoxGenerator; Camera: TYPE = GGModelTypes.Camera; Joint: TYPE = GGModelTypes.Joint; Point: TYPE = GGBasicTypes.Point; Scene: TYPE = GGModelTypes.Scene; Segment: TYPE = GGSegmentTypes.Segment; SelectionClass: TYPE = GGSegmentTypes.SelectionClass; Slice: TYPE = GGModelTypes.Slice; SliceDescriptor: TYPE = GGModelTypes.SliceDescriptor; SliceDescriptorWalkProc: TYPE = GGModelTypes.SliceDescriptorWalkProc; SliceGenerator: TYPE = GGModelTypes.SliceGenerator; SliceWalkProc: TYPE = GGModelTypes.SliceWalkProc; Traj: TYPE = GGModelTypes.Traj; TrajEnd: TYPE = GGModelTypes.TrajEnd; -- {lo, hi} Vector: TYPE = GGBasicTypes.Vector; WalkLevel: TYPE = GGModelTypes.WalkLevel; <> CreateScene: PROC [entities: LIST OF Slice _ NIL] RETURNS [scene: Scene]; CreateDefaultCamera: PROC [] RETURNS [camera: Camera]; <> MergeScenes: PROC [back: Scene, front: Scene] RETURNS [combined: Scene]; SetScene: PROC [from: Scene, to: Scene]; -- transfers the entity list "from" to "to" MakeSceneGarbage: PROC [scene: Scene]; <> <<>> <> <> AddSlice: PROC [scene: Scene, slice: Slice, priority: INT _ -1]; <> AddSlices: PROC [scene: Scene, slices: LIST OF Slice, priority: INT _ -1]; <> AddHole: PROC [outline: Slice, hole: Traj, scene: Scene] RETURNS [holier: Slice]; AppendHoles: PROC [outline: Slice, holes: LIST OF Slice]; -- CAREFUL DeleteSlice: PROC [scene: Scene, slice: Slice]; <> RemoveSlice: PROC [scene: Scene, slice: Slice]; <> DeleteSequence: PROC [seq: SliceDescriptor, scene: Scene] RETURNS [oldOutline: Slice, newOutlines: LIST OF Slice]; <> <> <> <> <> <> <<>> CopySelectedParts: PROC [fromScene: Scene, toScene: Scene] RETURNS [newSlices: LIST OF Slice]; <> <> <<>> GetPriority: PROC [scene: Scene, slice: Slice] RETURNS [priority: INT]; <> TopPriority: PROC [scene: Scene] RETURNS [priority: INT]; <> UpOne: PROC [scene: Scene, slice: Slice]; <> PutInFront: PROC [scene: Scene, slice: Slice, slices: LIST OF Slice]; <> <> DownOne: PROC [scene: Scene, slice: Slice]; <> PutBehind: PROC [scene: Scene, slice: Slice, slices: LIST OF Slice]; <> <> ReplaceSlice: PROC [scene: Scene, slice: Slice, slices: LIST OF Slice]; <> <> PutAtPriority: PROC [scene: Scene, slice: Slice, priority: INT]; <> GetAtPriority: PROC [scene: Scene, priority: INT] RETURNS [slice: Slice]; <> DeleteAtPriority: PROC [scene: Scene, priority: INT] RETURNS [deleted: Slice]; <> <> WalkSlices: PROC [scene: Scene, level: WalkLevel, walkProc: SliceWalkProc, classType: ATOM _ NIL] RETURNS [aborted: BOOL _ FALSE]; < all classes. Use level=all to walk every slice of a given class.>> WalkSelectedSlices: PROC [scene: Scene, level: WalkLevel, walkProc: SliceDescriptorWalkProc, selectClass: SelectionClass, classType: ATOM _ NIL] RETURNS [aborted: BOOL _ FALSE]; ListSlices: PROC [scene: Scene, level: WalkLevel, classType: ATOM _ NIL] RETURNS [sliceList: LIST OF Slice]; < all classes. Use level=all to list every slice of a given class. level=all => depth-first ordered list.>> ListSelectedSlices: PROC [scene: Scene, level: WalkLevel, selectClass: SelectionClass, classType: ATOM _ NIL] RETURNS [selectedList: LIST OF SliceDescriptor]; CountSlices: PROC [scene: Scene, level: WalkLevel, classType: ATOM _ NIL] RETURNS [count: INT _ 0]; CountSelectedSlices: PROC [scene: Scene, level: WalkLevel, selectClass: SelectionClass, classType: ATOM _ NIL] RETURNS [count: CARD _ 0]; FirstSelectedSlice: PROC [scene: Scene, level: WalkLevel, selectClass: SelectionClass, classType: ATOM _ NIL] RETURNS [sliceD: SliceDescriptor]; LastSelectedSlice: PROC [scene: Scene, level: WalkLevel, selectClass: SelectionClass, classType: ATOM _ NIL] RETURNS [sliceD: SliceDescriptor]; IsTopLevel: PROC [slice: Slice] RETURNS [BOOL]; <<>> <> <<>> BoundBoxesInScene: PROC [scene: Scene] RETURNS [bBoxGen: BoundBoxGenerator]; <> TightBoxesInScene: PROC [scene: Scene] RETURNS [bBoxGen: BoundBoxGenerator]; <> NextBox: PROC [g: BoundBoxGenerator] RETURNS [next: BoundBox]; BoundBoxOfScene: PROC [scene: Scene] RETURNS [bBox: BoundBox]; <> TightBoxOfScene: PROC [scene: Scene] RETURNS [bBox: BoundBox]; <> BoundBoxOfSelected: PROC [scene: Scene, selectClass: SelectionClass _ normal, sliceLevel: BOOL _ FALSE] RETURNS [bigBox: BoundBox]; <> TightBoxOfSelected: PROC [scene: Scene, selectClass: SelectionClass _ normal, sliceLevel: BOOL _ FALSE] RETURNS [bigBox: BoundBox]; <> SelectionBoxOfSelected: PROC [scene: Scene, selectClass: SelectionClass _ normal, full: BOOL _ FALSE] RETURNS [bigBox: BoundBox]; <> BoundBoxOfMoving: PROC [scene: Scene, editConstraints: GGModelTypes.EditConstraints, bezierDrag: GGModelTypes.BezierDragRecord, selectClass: SelectionClass _ normal] RETURNS [bigBox: BoundBox]; <> <<>> DeleteAllSelected: PROC [scene: Scene] RETURNS [bBox: BoundBox]; SaveSelections: PROC [scene: Scene]; RestoreSelections: PROC [scene: Scene]; SelectInBox: PROC [scene: Scene, box: BoundBox, selectClass: SelectionClass _ normal]; <