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
Imager, SVInterfaceTypes, SVSceneTypes;
SVAlign: CEDAR DEFINITIONS =
BEGIN
AlignBag: TYPE = SVInterfaceTypes.AlignBag;
Slice: TYPE = SVSceneTypes.Slice;
FeatureData: TYPE = SVInterfaceTypes.FeatureData;
Filters: TYPE = SVInterfaceTypes.Filters;
Scene: TYPE = SVSceneTypes.Scene;
Skitter: TYPE = SVInterfaceTypes.Skitter;
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];
[Artwork node; type 'Artwork on' to command tool]
Creating a TriggerBag
emptyTriggerBag: 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];
Creating an AlignBag
emptyAlignBag: AlignBag; -- an (immutable) empty align bag.
Use this as an (immutable) empty TriggerBag.
CreateAlignBag: PROC [] RETURNS [alignBag: AlignBag];
FlushAlignBag: PROC [alignBag: AlignBag];
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 the Align Bag
FillStaticAlignBag: PROC [triggerBag: TriggerBag, sceneBag: TriggerBag, filters: Filters, hideAlignments: BOOL, midpoints: BOOL, alignBag: AlignBag];
FillDynamicAlignBag: PROC [triggerBag: TriggerBag, sceneBag: TriggerBag, filters: Filters, hideAlignments: BOOL, midpoints: BOOL, action: ATOM, alignBag: AlignBag];
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
BuiltInFilters: PROC [triggerBag: TriggerBag, filters: Filters, hideAlignments: BOOL, alignBag: AlignBag];
AddAllMidpoints: PROC [sceneBag: TriggerBag, midpoints: BOOL, alignBag: AlignBag];
Incremental Addition versions of the Filter Routines shown in the figure as boxes and ovals.
CreateAnchorTrigger: PROC [anchor: Skitter, triggerBag: TriggerBag] RETURNS [feature: FeatureData];
AddHotSlice: PROC [sliceD: SliceDescriptor, triggerBag: TriggerBag] RETURNS [feature: FeatureData];
IncrementalFilters: PROC [trigger: FeatureData, filters: Filters, hideAlignments: BOOL, alignBag: AlignBag] RETURNS [alignObjects: LIST OF FeatureData];
Adds the new feature to the TriggerBag and returns it.
Special Operations
CreateAnchorAlignment: PROC [anchor: Skitter, alignBag: AlignBag] RETURNS [feature: FeatureData];
Drawing
DrawAlignBagRegardless: PROC [dc: Imager.Context, alignBag: AlignBag, svData: SVData];
DrawFeatureList: PROC [dc: Imager.Context, alignObjects: LIST OF FeatureData, svData: SVData];
Adds the new feature to the AlignBag and returns it.
END.