<> <> <> <> <<>> DIRECTORY Graphics, SV2d, SV3d, SVModelTypes, SVRayTypes, SVSceneTypes, SVInterfaceTypes; SVSelections: CEDAR DEFINITIONS = BEGIN Assembly: TYPE = SVSceneTypes.Assembly; Camera: TYPE = SVModelTypes.Camera; CoordSystem: TYPE = SVModelTypes.CoordSystem; EditToolData: TYPE = SVInterfaceTypes.EditToolData; Matrix4by4: TYPE = SV3d.Matrix4by4; Point2d: TYPE = SV2d.Point2d; Primitive: TYPE = SVRayTypes.Primitive; Scene: TYPE = SVSceneTypes.Scene; ViewerToolData: TYPE = SVInterfaceTypes.ViewerToolData; <> Skitter: TYPE = SVInterfaceTypes.Skitter; SkitterMode: TYPE = SVInterfaceTypes.SkitterMode; <> UpdateSkitter: PROC [assembly: Assembly, primitive: Primitive, viewerToolData: ViewerToolData]; SetModeSkitter: PROC [mode: SkitterMode]; PositionSkitter: PROC [cameraPoint: Point2d, skitterWORLD: Matrix4by4]; ComplementSkitter: PROC [dc: Graphics.Context, camera: Camera]; DrawSkitter: PROC [dc: Graphics.Context, camera: Camera]; KillSkitter: PROC [editToolData: EditToolData]; IsAliveSkitter: PROC [] RETURNS [BOOL]; <> GetSkitterData: PROC [] RETURNS [assembly: Assembly, primitive: Primitive, viewerToolData: ViewerToolData]; GetModeSkitter: PROC [] RETURNS [mode: SkitterMode]; GetPositionSkitter: PROC [] RETURNS [cameraPoint: Point2d, skitterWORLD: Matrix4by4]; <> AddHookFromSkitter: PROC [] RETURNS [assembly: Assembly]; AddFloaterFromSkitter: PROC [] RETURNS [assembly: Assembly]; <> <<1) A Floater's coordSys>> <<2) A Hook coordSys>> <<3) An Object's coordSys.>> <> <<1) A hook movee selects an object to be tugged and a tugboat at the same time.>> <<2) A floater, hook, or object selection allows the selected coordSys to be moved. A hook might be moved around on a surface or might become a floater. An object moves along with its children. A floater moves in space.>> <<3) The origin of an in-scene ray is specified.>> <<4) The origin of a floater calculation is specified.>> <> <<1) Any target can be a center of rotation, a base frame for translation.>> <<2) All selectable objects are also assemblies in the scene tree. All assemblies have an associated distinguished plane. Hence a target can suggest a plane to be used for dragging.>> <<3) The direction point of an in-scene ray is specified.>> <<4) The end point of a floater calculation is specified.>> <<>> <> Selection: TYPE = SVInterfaceTypes.Selection; ReferentType: TYPE = SVInterfaceTypes.ReferentType; -- {hook, floater, coordSys}; SelectionType: TYPE = SVInterfaceTypes.SelectionType; -- {target, movee}; <> <<1) The global skitter.>> <<2) A stack of all movee selections.>> <<3) A stack of all target selections.>> <<>> CreateHookMovee: PROC [jack: Assembly, indirect: Assembly, viewerToolData: ViewerToolData] RETURNS [movee: Selection]; <> CreateCoordSysMovee: PROC [coincident: Assembly, viewerToolData: ViewerToolData] RETURNS [movee: Selection]; CreateHookTarget: PROC [jack: Assembly, indirect: Assembly, viewerToolData: ViewerToolData] RETURNS [target: Selection]; CreateCoordSysTarget: PROC [coincident: Assembly, viewerToolData: ViewerToolData] RETURNS [target: Selection]; CreatePlaneSelection: PROC [coincident: Assembly, viewerToolData: ViewerToolData] RETURNS [planeSel: Selection]; GetSelectionGenerator: PROC [selectType: SelectionType] RETURNS [g: SelectionGenerator, selectionsExist: BOOL]; ComplainIfNot: PROC [selectionsExist: BOOL]; NextSelection: PROC [g: SelectionGenerator] RETURNS [sel: Selection]; NextSelectionCoincident: PROC [g: SelectionGenerator] RETURNS [coin: Assembly]; SelectionGenerator: TYPE = SVInterfaceTypes.SelectionGenerator; PushMovee: PROC [moveeSel: Selection]; PopMovee: PROC [] RETURNS [moveeSel: Selection]; NextMovee: PROC [] RETURNS [moveeSel: Selection]; <> PopMoveeCoincident: PROC [] RETURNS [movee: Assembly]; NextMoveeCoincident: PROC [] RETURNS [movee: Assembly]; <> TopMovee: PROC [] RETURNS [movee: Selection]; <> TopMoveeC: PROC [] RETURNS [movee: Selection]; <> TopMoveeCoincident: PROC [] RETURNS [movee: Assembly]; <> ClearMoveeStack: PROC [editToolData: EditToolData]; PushTarget: PROC [targetSel: Selection]; PopTarget: PROC [] RETURNS [targetSel: Selection]; NextTarget: PROC [] RETURNS [targetSel: Selection]; PopTargetCoincident: PROC [] RETURNS [target: Assembly]; NextTargetCoincident: PROC [] RETURNS [movee: Assembly]; <> TopTarget: PROC [] RETURNS [targetSel: Selection]; <> TopTargetC: PROC [] RETURNS [targetSel: Selection]; <> TopTargetCoincident: PROC [] RETURNS [target: Assembly]; TopTargetCoinCoordSys: PROC [] RETURNS [targetCS: CoordSystem]; <> TopTargetCoinCoordSysC: PROC [] RETURNS [targetCS: CoordSystem]; <> ClearTargetStack: PROC [editToolData: EditToolData]; <<>> PushPlane: PROC [planeSel: Selection]; PopPlane: PROC [] RETURNS [planeSel: Selection]; TopPlane: PROC [] RETURNS [planeSel: Selection]; <> TopPlaneC: PROC [] RETURNS [planeSel: Selection]; <> TopPlaneCoincident: PROC [] RETURNS [planeAssem: Assembly]; PlaneStackEmpty: PROC [] RETURNS [BOOL]; ClearPlaneStack: PROC [editToolData: EditToolData]; ComplementAnySelectionsOnDC: PROC [dc: Graphics.Context, assembly: Assembly, scene: Scene]; ComplementSelection: PROC [viewerToolData: ViewerToolData, sel: Selection]; ComplementSelectionDC: PROC [dc: Graphics.Context, sel: Selection, viewerToolData: ViewerToolData]; ComplementAnySelectionsDC: PROC [dc: Graphics.Context, viewerToolData: ViewerToolData]; ComplementAllSelections: PROC [selType: SelectionType]; ComplementReferentDC: PROC [dc: Graphics.Context, selection: Selection, viewerToolData: ViewerToolData]; <> KillSkitterAndSelections: PROC [editToolData: EditToolData]; END.