SVAlign.mesa
Copyright © 1986 by Xerox Corporation. All rights reserved.
Last edited by Bier on March 11, 1987 4:59:39 pm PST
Contents: Maintains the three snap-dragging gravity bags: triggerBag, sceneBag, and alignBag for Solidviews.
DIRECTORY
SVInterfaceTypes, SVSceneTypes;
SVAlign: CEDAR DEFINITIONS =
BEGIN
AlignBag: TYPE = SVInterfaceTypes.AlignBag;
Slice: TYPE = SVSceneTypes.Slice;
FeatureData: TYPE = SVInterfaceTypes.FeatureData;
Scene: TYPE = SVSceneTypes.Scene;
SliceDescriptor: TYPE = SVSceneTypes.SliceDescriptor;
SliceParts: TYPE = SVSceneTypes.SliceParts;
TriggerBag: TYPE = REF TriggerBagObj;
TriggerBagObj: TYPE = SVInterfaceTypes.TriggerBagObj;
SVData: TYPE = SVInterfaceTypes.SVData;
FilterSliceProc: TYPE = PROC [sliceD: SliceDescriptor, scene: Scene] RETURNS [stationary: SliceDescriptor];
Creating a TriggerBag
emptyTriggerBag: TriggerBag;
emptyAlignBag: AlignBag; -- an (immutable) empty align bag.
Use this as an (immutable) empty TriggerBag.
CreateTriggerBag: PROC [scene: Scene] RETURNS [triggerBag: TriggerBag];
Allocates a new empty TriggerBag.
FlushTriggerBag: PROC [triggerBag: TriggerBag];
Takes an old TriggerBag and makes it empty.
CopyTriggerBag: PROC [triggerBag: TriggerBag] RETURNS [copy: TriggerBag];
FeatureFromSlice: PROC [slice: Slice, parts: SliceParts ← NIL] RETURNS [feature: FeatureData];
Filling the SceneBag
FillStaticSceneBag: PROC [scene: Scene, sceneBag: TriggerBag];
FillDynamicSceneBag: PROC [scene: Scene, sceneBag: TriggerBag];
Filling all of the Bags at Once
SetStaticBags: PROC [svData: SVData];
SetDynamicBags: PROC [svData: SVData, action: ATOM];
StaticToDynamicBags: PROC [svData: SVData] RETURNS [repaintNeeded: BOOL];
DynamicToStaticBags: PROC [svData: SVData] RETURNS [repaintForeground: BOOL];
UpdateBagsForNewSlices: PROC [newSlices: LIST OF Slice, svData: SVData];
The Filter Routines shown in the figure as boxes and ovals
RemoveMoving: PROC [scene: Scene, triggerBag: TriggerBag]; -- private
END.