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]; emptyTriggerBag: TriggerBag; CreateTriggerBag: PROC [scene: Scene] RETURNS [triggerBag: TriggerBag]; FlushTriggerBag: PROC [triggerBag: TriggerBag]; CopyTriggerBag: PROC [triggerBag: TriggerBag] RETURNS [copy: TriggerBag]; emptyAlignBag: AlignBag; -- an (immutable) empty align bag. CreateAlignBag: PROC [] RETURNS [alignBag: AlignBag]; FlushAlignBag: PROC [alignBag: AlignBag]; FeatureFromSlice: PROC [slice: Slice, parts: SliceParts _ NIL] RETURNS [feature: FeatureData]; FillStaticSceneBag: PROC [scene: Scene, sceneBag: TriggerBag]; FillDynamicSceneBag: PROC [scene: Scene, sceneBag: TriggerBag]; 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]; 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]; BuiltInFilters: PROC [triggerBag: TriggerBag, filters: Filters, hideAlignments: BOOL, alignBag: AlignBag]; AddAllMidpoints: PROC [sceneBag: TriggerBag, midpoints: BOOL, alignBag: AlignBag]; 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]; CreateAnchorAlignment: PROC [anchor: Skitter, alignBag: AlignBag] RETURNS [feature: FeatureData]; DrawAlignBagRegardless: PROC [dc: Imager.Context, alignBag: AlignBag, svData: SVData]; DrawFeatureList: PROC [dc: Imager.Context, alignObjects: LIST OF FeatureData, svData: SVData]; END. <SVAlign.mesa Copyright c 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. [Artwork node; type 'Artwork on' to command tool] Creating a TriggerBag Allocates a new empty TriggerBag. Takes an old TriggerBag and makes it empty. Creating an AlignBag Use this as an (immutable) empty TriggerBag. Filling the SceneBag Filling the Align Bag Filling all of the Bags at Once The Filter Routines shown in the figure as boxes and ovals Incremental Addition versions of the Filter Routines shown in the figure as boxes and ovals. Adds the new feature to the TriggerBag and returns it. Special Operations Drawing Adds the new feature to the AlignBag and returns it. &=JIcode K m1QTQTTT>>Q>krjVKXeroxXC1-2-2 HelveticaXeroxResearch RGBLinear Scene ObjectskxjXeroxResearch RGBLinear>TTKTKTK>K>>kXeroxResearch RGBLinearT~J;ZD@qbCAUiE;F61oJOZ@!apAYhk >Oma8Pe{*{(%;0;!z_Q$qB]d m:<SEI)ANROH7q& %I9XT~rjXeroxXC1-2-2 HelveticaTriggerkrjzXeroxXC1-2-2 HelveticaBagk\Q\*\rjrj ơ1 JOO JO1 J Jkk>1>*g-J7`7smC\;\loMϣ|^;*-*Q8#V7.|l;E3!6m,}{d?>U;\]8L 5G*!f ;v*-qd-B]|^^SAH)p"Aq{J2Z6QXg`7smCrj-XeroxXC1-2-2 HelveticaTriggerkrjCXeroxXC1-2-2 HelveticaBagkr}rrj I7XeroxXC1-2-2 HelveticaCartesian ProductkÙ١{{árjˠXeroxXC1-2-2 Helvetica Not Movingk1/ٗ/ÙJoAZDa98CAJtKE;F JO< #Ph/appYhkvOmaX1PeG{(}C0;MEz_NKr;d m4IEICc$NRO{y& %%o{;jK( Jrjv3T;XeroxXC1-2-2 HelveticaBagkrjcXeroxXC1-2-2 HelveticaAlignkxj>TT%T%T%>%>>krjKXeroxXC1-2-2 Helvetica Scene ObjectskÙ١%áΎrjˠXeroxXC1-2-2 Helvetica Not Movingk JPAZDFQ8GCAg`Q`kKE;F JO+8#9/apebQYhkivOma@w1PeU?V!k]C0;c&EF SnEKVK;d mj!INR~NROm& %3{;j8W(  JrjQ?zXeroxXC1-2-2 HelveticaBagk>ٗÙ#!rjXeroxXC1-2-2 HelveticaScenekxj&&&&krjXeroxXC1-2-2 HelveticaAnchorkT5e1CRV{AD`!Wc<!YS,aJ7c5p>b4>x#O[ ;"zv=G)YQ.a&}CIE!ӡ`. jW+nMK}CGS ?e1CrjXeroxXC1-2-2 HelveticaBagkrj^`1xAXeroxXC1-2-2 HelveticaScenekm3wUW`m3$iW`iwUm3rjРXeroxXC1-2-2 HelveticaUkrjrj ơ1 JOO JO1 J JkkK-rOb$M+>=ƙ" wUJ]([rjXeroxXC1-2-2 HelveticaGravitykrjXeroxXC1-2-2 HelveticaActiveksgsqST5$/Y#T5D:Ab1h`1ċGyV<Og-J7.tGR@;g-J7BcjO*k}u*q7}uُ7{*(ٗC]*(#!7{PI#!C]PIK-`MS<K-(S<" "gQJ" AgQJ$]p-$p-+>=IAw+>==&䗘J](P{+D!5J](VpWW/F}*/M}*rjG&eEXeroxXC1-2-2 HelveticaSpecialkrj|bDEXeroxXC1-2-2 Helvetica Operationskxje>eTeTTT>>e>krjjKXeroxXC1-2-2 HelveticaAnchorkm3>$m3$Fp-m3$S5,p-xj>TTTT>>>krjEXeroxXC1-2-2 HelveticaModek/3>$/3$Fp-/3$\},p-kkgArtwork InterpressBounds:0.0 mm xmin 0.0 mm ymin 184.8556 mm xmax 116.6063 mm ymax 119.4285 mm topLeading 119.4285 mm topIndent 1.411111 mm bottomLeading 0.5 0.3 0.95 backgroundColor the topLeading 6 pt .sub backgroundAscent 3 pt backgroundDescent 4 pt outlineBoxThickness 1 pt outlineBoxBearoffn33KKKGK!!/K++KIKKKc";K,,K5K )KK$^KKK&>K&?KKKR K R  KKK %K4KIKMK HKK:K<jK#RKK\K+cK 3c :K66KKK'aKKK:V$^K44KKK 43