DIRECTORY GGBasicTypes, GGGravity, GGInterfaceTypes, GGModelTypes; GGAlign: CEDAR DEFINITIONS = BEGIN Caret: TYPE = GGInterfaceTypes.Caret; FeatureData: TYPE = GGGravity.FeatureData; Filters: TYPE = GGInterfaceTypes.Filters; GGData: TYPE = GGInterfaceTypes.GGData; Line: TYPE = GGBasicTypes.Line; AlignBag: TYPE = GGGravity.AlignBag; Outline: TYPE = GGModelTypes.Outline; OutlineDescriptor: TYPE = GGModelTypes.OutlineDescriptor; Point: TYPE = GGBasicTypes.Point; Scene: TYPE = GGModelTypes.Scene; SelectionClass: TYPE = GGInterfaceTypes.SelectionClass; Sequence: TYPE = GGModelTypes.Sequence; Slice: TYPE = GGModelTypes.Slice; SliceDescriptor: TYPE = GGModelTypes.SliceDescriptor; Traj: TYPE = GGModelTypes.Traj; TrajEnd: TYPE = GGModelTypes.TrajEnd; TriggerBag: TYPE = REF TriggerBagObj; TriggerBagObj: TYPE = GGInterfaceTypes.TriggerBagObj; Vector: TYPE = GGBasicTypes.Vector; FilterOutlineProc: TYPE = PROC [outlineD: OutlineDescriptor, scene: Scene] RETURNS [stationary: OutlineDescriptor]; FilterSliceProc: TYPE = PROC [sliceD: SliceDescriptor, scene: Scene] RETURNS [stationary: SliceDescriptor]; emptyTriggerBag: TriggerBag; CreateTriggerBag: PROC [] RETURNS [triggerBag: TriggerBag]; FlushTriggerBag: PROC [triggerBag: TriggerBag]; CopyTriggerBag: PROC [triggerBag: TriggerBag] RETURNS [copy: TriggerBag]; emptyAlignBag: AlignBag; -- an (immutable) empty object bag. CreateAlignBag: PROC [] RETURNS [objectBag: AlignBag]; FlushAlignBag: PROC [objectBag: AlignBag]; FillStaticTriggerBag: PROC [anchor: Caret, scene: Scene, heuristics: BOOL, triggerBag: TriggerBag]; FillDynamicTriggerBag: PROC [anchor: Caret, scene: Scene, heuristics: BOOL, triggerBag: TriggerBag]; 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 [ggData: GGData]; SetDynamicBags: PROC [ggData: GGData, action: ATOM]; StaticToDynamicBags: PROC [ggData: GGData] RETURNS [repaintForeground: BOOL]; DynamicToStaticBags: PROC [ggData: GGData] RETURNS [repaintForeground: BOOL]; UpdateBagsForAdd: PROC [oldOutline: Outline, newOutline: Outline, trajEnd: TrajEnd, ggData: GGData] RETURNS [repaintForeground: BOOL]; UpdateBagsForNewSlices: PROC [newSlices: LIST OF Slice, ggData: GGData]; UpdateBagsForDelete: PROC [oldOutline: Outline, ggData: GGData] RETURNS [repaintForeground: BOOL]; BuiltInFilters: PROC [triggerBag: TriggerBag, filters: Filters, hideAlignments: BOOL, alignBag: AlignBag]; AddAllMidpoints: PROC [sceneBag: TriggerBag, midpoints: BOOL, alignBag: AlignBag]; CreateAnchorTrigger: PUBLIC PROC [anchor: Caret, triggerBag: TriggerBag] RETURNS [feature: FeatureData]; AddHotSlice: PROC [sliceD: SliceDescriptor, triggerBag: TriggerBag] RETURNS [feature: FeatureData]; RemoveMovingSlice: PROC [sliceD: SliceDescriptor, scene: Scene] RETURNS [stationary: OutlineDescriptor]; IncrementalFilters: PROC [trigger: FeatureData, filters: Filters, hideAlignments: BOOL, alignBag: AlignBag] RETURNS [alignObjects: LIST OF FeatureData]; IncrementalFilterSlice: PROC [sliceD: SliceDescriptor, filters: Filters, hideAlignments: BOOL, alignBag: AlignBag] RETURNS [alignObjects: LIST OF FeatureData]; IncrementalFilterOutline: PROC [outlineD: OutlineDescriptor, filters: Filters, hideAlignments: BOOL, alignBag: AlignBag] RETURNS [alignObjects: LIST OF FeatureData]; IncrementalMidpointsOutline: PROC [outlineD: OutlineDescriptor, midpoints: BOOL, alignBag: AlignBag]; RemoveAnchorTrigger: PUBLIC PROC [triggerBag: TriggerBag]; RemoveEntireHotSlice: PROC [slice: Slice, triggerBag: TriggerBag] RETURNS [oldSliceD: SliceDescriptor]; RemoveHotSlice: PROC [sliceD: SliceDescriptor, triggerBag: TriggerBag]; RemoveMentionSlice: PROC [slice: Slice, alignBag: AlignBag]; END. ¨GGAlign.mesa Contents: Allows the client to build a set of trigger objects (joints, segments, and control points) which can be sent through a GGGravity filter to create a set alignment objects. Pier, May 13, 1987 2:41:22 pm PDT Bier, April 6, 1987 9:35:53 pm PDT [Artwork node; type 'ArtworkInterpress on' to command tool] Creating a TriggerBag Use this as an (immutable) empty TriggerBag. Allocates a new empty TriggerBag. Takes an old TriggerBag and makes it empty. Allocates a copy of triggerBag. The copy shares featureDatas with the original but has freshly allocated LIST structures. Creating an AlignBag Filling the Trigger Bag 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 AddAnchorTrigger: PROC [anchor: Caret, triggerBag: TriggerBag]; -- private AddAllHotOutlines: PROC [scene: Scene, triggerBag: TriggerBag]; -- private AddAllHotSlices: PROC [scene: Scene, triggerBag: TriggerBag]; -- private AddHeuristics: PROC [scene: Scene, heuristics: BOOL, atom: ATOM, triggerBag: TriggerBag]; -- private RemoveMoving: PROC [scene: Scene, triggerBag: TriggerBag]; -- private Incremental Addition versions of the Filter Routines shown in the figure as boxes and ovals. Just like AddAnchorTrigger except it returns the feature in addition to adding it to the triggerBag. AddHotOutline: PROC [outlineD: OutlineDescriptor, triggerBag: TriggerBag] RETURNS [feature: FeatureData]; Add outlineD to triggerBag and return the new feature which represents outlineD. Add slice to triggerBag and return the new feature which represents slice. HeuristicsOutline: PROC [outline: Outline, heuristics: BOOL] RETURNS [honoraryTrigger: OutlineDescriptor]; -- private RemoveMovingOutline: PROC [outlineD: OutlineDescriptor, scene: Scene] RETURNS [stationary: OutlineDescriptor]; Returns those part of outline that are in outlineD but are not moving. Returns those part of slice that are in sliceD but are not moving. Incremental Deletion versions of the Filter Routines shown in the figure as boxes and ovals. RemoveEntireHotOutline: PROC [outline: Outline, triggerBag: TriggerBag] RETURNS [oldD: OutlineDescriptor]; RemoveHotOutline: PROC [outlineD: OutlineDescriptor, triggerBag: TriggerBag]; RemoveMentionOutline: PROC [outline: Outline, alignBag: AlignBag]; Removes all alignment objects and midpoints that were triggered (only) by this outline. Removes mention of this outline from those alignment objects that are trigger by other triggers as well. Removes all alignment objects and midpoints that were triggered (only) by this slice. Removes mention of this slice from those alignment objects that are trigger by other triggers as well. �ʨ˜Icode™ ™µK™!K™"—šÏk ˜ Jšœ8˜8—K˜Kšœ �œ� œ˜Kš�˜˜Kšœ�œ˜%Kšœ �œ˜*Kšœ �œ˜)Kšœ�œ˜'Kšœ�œ˜Kšœ �œ˜$Kšœ �œ˜%Kšœ�œ"˜9Kšœ�œ˜!Kšœ�œ˜!Kšœ�œ#˜7Kšœ �œ˜'Kšœ�œ˜!Kšœ�œ ˜5Kšœ�œ˜Kšœ �œ˜%Kšœ �œ�œ˜%Kšœ�œ"˜5Kšœ�œ˜#—Kšœ�œ�œ-�œ!˜sKšœ�œ�œ)�œ˜kI artworkFigure–G91.02716 mm topLeading 91.02716 mm topIndent 1.411111 mm bottomLeading •Bounds:0.0 mm xmin 0.0 mm ymin 178.1528 mm xmax 88.20494 mm ymax •Artwork Interpress• Interpressá+Interpress/Xerox/3.0  f j k j¡¥“ļ= ¤ ¨  ™ÄApC¡£ r jbÙ ¢ ¨¡¡¨ r jª ¤èI ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“ÁHot Scene Objects– k é r jª ¤u  ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“Á Heuristics– k é r j¬ ¤ÄOò ¢ ¥ ¨ÅxeroxÅ tiogafontsÅMath12£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“ÁU– k é r j¢¯“¢°“¡¡¨eBeX¡¹¢¯“¢°“¡¡¨eXÆX¡¹¢¯“¢°“¡¡¨ÆXÆB¡¹¢¯“¢°“¡¡¨ÆBeB¡¹ k é r jª ¤jÄS ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“Á Scene Objects– k é r j¢¯“¢°“¡¡¨âBâX¡¹¢¯“¢°“¡¡¨âX_X¡¹¢¯“¢°“¡¡¨_X_B¡¹¢¯“¢°“¡¡¨_BâB¡¹ k é¢¯“¢°“¢·“¡¡¨ÄˆµÄ¹i¨™Ä![;Ä_�D—Ä@ŽoĨ �Äq•¾Ä‚Ý|Ä#‡;Ĉ#ƒ¡’ÄxwÅÄFSFÄ>ÝoÄL3OÄ&±EŒ¡’Ä[!ÄccpÄL=„Ä[kÄZÀ•ÄPña¡’Ä#í8ÄR‰eÄÃ*Ä£KÇÄ*–;Ä1�;¡’ÄμÄGXSÄYøqÄÀQÖÄIU]Äe½m¡’Ä@¸SÄOËRÄ. AÄOŽOÄQ qÄ&Ÿ%¡’Ĉù¿Ä€ãjÄ@¡XÄ ÆùĈµÄ¹i¨¡’¡¸ r jª ¤Ä)Œ ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“ÁTrigger– k é r jª ¤Ä?~ ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“ÁBag– k é¢¯“¢°“¢·“¡¡¨p™e#p.¡“±Ž¼#±¡“pŽ¡¸ r j¡¡¨¢¯“Ä;÷™Ä;èÄYèÄÙ J¡”ÄwèÄw÷ÄÙ J¡”ÄwÄYÄÙ J¡”Ä;Ä;÷ÄÙ J¡”¡¸ k é¢¯“¢°“¢·“¡¡¨ÄB™ÄY—˜¢¯“¢°“¢·“¡¡¨ÄëB™.�˜¢¯“¢°“¢·“¡¡¨Äá™ÄY—˜¢¯“¢°“¢·“¡¡¨Äe7ÄtyC™Äam;ĸ——ĹoăJMÄ?é¾ÄÌ�yÄc™;Ä÷Þ-¡’ĉ~QÄ9a#ÄZà7Ä1x¿ÄqŸEÄ¡’Ä61!Ä¥êmÄÛ•„ĶÆ{Äi>ÄV¯;¡’Ä`½8ÄLô5ÄJ_*Ä!yÄj¨;Ä­év¡’Ä,_Ä.SÄÔ®qÄe5BÄ®S]Äcøã¡’ÄšÚSÄAì)Äu6AÄƨyÄÔÅvÄ|7J¡’ÄXc¿Ä[±6Äž_WÄo·Äe7ÄtyC¡’¡¸ r jª ¤ÄUÄ ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“ÁTrigger– k é r jª ¤ÄkÄ ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“ÁBag– k é¢¯“¢°“¢·“¡¡¨Mó™BþM ¡“uŽ€þuó¡“MŽ¡¸ r jª ¤Pĵ ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“ÁFilters– k é¢¯“¢°“¢·“¡¡¨Ä Ç™ÄõÒÄ Ý¡“Ä£ŽÄ¹Òģǡ“Ä Ž¡¸ r jª ¤ÄÏ ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“Á Not Moving– k é¢¯“¢°“¢·“¡¡¨ÄYè™ÄWÝ—˜¢¯“¢°“¢·“¡¡¨ÄWǙĻW«�˜¢¯“¢°“¢·“¡¡¨œÄ¹i¨™ÄtßAÄ_�D—Äe™8Ĩ �ĆlíÄ‚Ý|ćÇJĈ#ƒ¡’ÄŠPKÄFSFÄÊ ÄL3OÄ>Å#Œ¡’ÄT/ÄccpÄÊ¿pÄ[kļ“ÄPña¡’Ä®M]ÄR‰eÄxÍ?Ä%¿.Ä‚óCÄ1�;¡’ĉ±EÄGXSĘ*KÄÀQÖÄw@;Äe½m¡’Ä’èIÄOËRÄF3$ÄOŽOÄà<sÄ&Ÿ%¡’Ä&ÿÄ€ãjÄN¯(Ä ÆùœÄ¹i¨¡’¡¸ r jª ¤ÄA #Ä4@; ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“ÁBag– k é r jª ¤wÄá ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“ÁAlign– k é r j¢¯“¢°“¡¡¨ØBØX¡¹¢¯“¢°“¡¡¨ØX9X¡¹¢¯“¢°“¡¡¨9X9B¡¹¢¯“¢°“¡¡¨9BØB¡¹ k é r jª ¤ÝÄS ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“Á Scene Objects– k é¢¯“¢°“¢·“¡¡¨âÇ™×ÒâÝ¡“.Ž9Ò.Ç¡“⎡¸ r jª ¤çÏ ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“Á Not Moving– k é¢¯“¢°“¢·“¡¡¨!Ĺi¨™ÄU¤AÄ_�D—ÄJ±8Ĩ �Ä™�íÄ‚Ý|Äm´QĈ#ƒ¡’ÄfGKÄFSFÄ� ÄL3OÄ-ô#Œ¡’Ä=/ÄccpÄ”ïpÄ[kÄÈ“ÄPña¡’Ä�ž]ÄR‰eÄZˆ?Ä%¿.ÄbÂCÄ1�;¡’ÄhŠEÄGXSÄt!KÄÀQÖÄZç;Äe½m¡’ÄoÕIÄOËRÄ4ç$ÄOŽOĨûsÄ&Ÿ%¡’ÄcÄ€ãjÄ;w(Ä Æù!Ĺi¨¡’¡¸ r jª ¤ÄV¤?~ ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“ÁBag– k é¢¯“¢°“¢·“¡¡¨ÄÑB™Ý—˜¢¯“¢°“¢·“¡¡¨Ç™Ä$!�˜ r jª ¤ûÄÙ ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“ÁScene– k é r j¢¯“¢°“¡¡¨ää*¡¹¢¯“¢°“¡¡¨ä**¡¹¢¯“¢°“¡¡¨*¡¹¢¯“¢°“¡¡¨ä¡¹ k é r jª ¤éÄ÷ ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“ÁAnchor– k é¢¯“¢°“¢·“¡¡¨™ÄY—˜¢¯“¢°“¢·“¡¡¨ÃÄtyC™Ä~ÆAĸ——Än!8ăJMÄчíÄÌ�yÄ öQÄ÷Þ-¡’Ä•½KÄ9a#Äw Ä1x¿ÄD#Ä¡’Ä[=/Ä¥êmÄÛÏpĶÆ{Ä%!“ÄV¯;¡’ļx]ÄLô5Ä‚f?Ä!yÄ�(CÄ­év¡’Ä…+>Ä.SÄ£—KÄe5BÄ€=;Äcøã¡’ÄžIÄAì)ÄK¯$ÄƨyÄñÁsÄ|7J¡’Ä* Ä[±6ÄTÇ(Äo·ÃÄtyC¡’¡¸ r jª ¤Ä~‚?Ä ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“ÁBag– k é r jª ¤�/ ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“ÁScene– k é¢¯“¢°“¢·“¡¡¨˜ó™�þ˜ ¡“ÈŽÓþÈó¡“˜Ž¡¸ r jª ¤”û ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“Á Midpoints– k é r j¬ ¤ÄÃÔ ¢ ¥ ¨ÅxeroxÅ tiogafontsÅMath12£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“ÁU– k é r j¡¡¨¢¯“įٙįÊÄÍÊÄÙ J¡”ÄëÊÄëÙÄÙ J¡”ÄëèÄÍèÄÙ J¡”įèįÙÄÙ J¡”¡¸ k é¢¯“¢°“¢·“¡¡¨ÄO-Äs=O™ �˜¢¯“¢°“¢·“¡¡¨ÄdÜ1Ä^ÕA™ �˜¢¯“¢°“¢·“¡¡¨aó™ÄÍè—˜¢¯“¢°“¢·“¡¡¨ÄÍÊ™Ä# �˜¢¯“¢°“¢·“¡¡¨°ó™ÄÍè—˜ r jª ¤Ä#ÄÅ ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“ÁGravity– k é r jª ¤Ä'Ä© ¢ ¥ ¨ÅXeroxÅ TiogaFontsÅ Helvetica10£¡ “Ä  ¤ ” •  —¡¡¨  Š¡²“ÁActive– k é¢¯“¢°“¢·“¡¡¨áw™k�²Žw�˜ k é k gšÏn=™=Kšœ™K˜šœ˜Kšœ,™,—šžœ�œ�œ˜;Kšœ!™!—šžœ�œ˜/Kšœ+™+—šžœ�œ�œ˜IKšœz™z—K˜K™K™KšœÏc#˜Kšžœ�œ&˜?K˜K™Kšžœ�œR�œ �œ˜•Kš žœ�œR�œ �œ �œ˜¤K˜K™Kšž œ�œ˜%Kšžœ�œ�œ˜4K˜Kšžœ�œ�œ�œ˜MKšžœ�œ�œ�œ˜MKšžœ�œO�œ�œ˜‡Kšžœ�œ �œ�œ˜HKšžœ�œ'�œ�œ˜bK˜K™:Kšžœ�œ4™JKšžœ�œ3™JKšžœ�œ3™HKšž œ�œ�œ�œ%™dKšž œ�œ3™EKšžœ�œ<�œ˜jKšžœ�œ#�œ˜RK˜K™\šžœ�œ�œ)�œ˜hKšœd™d—šž œ�œ7�œ™iKšœP™P—šž œ�œ3�œ˜cKšœJ™J—Kš žœ�œ �œ�œ'Ÿ ™ušžœ�œ-�œ!™nKšœF™F—šžœ�œ)�œ!˜hKšœB™BK˜—Kš žœ�œ:�œ�œ�œ�œ˜˜Kš žœ�œ=�œ�œ�œ�œ˜ŸKš žœ�œA�œ�œ�œ�œ˜¥Kšžœ�œ*�œ˜eK˜K™\Kšžœ�œ�œ˜:Kšžœ�œ,�œ™jKšžœ�œ7™MKšžœ�œ(�œ˜gKšžœ�œ3˜Gšžœ�œ(™BKšœÁ™Á—šžœ�œ$˜