DIRECTORY GGFont, GGInterfaceTypes, GGModelTypes, GGSegmentTypes, GGUserInput, Imager, ImagerTransformation, MatchTurtle, MatchViewer, Rope; Match: CEDAR DEFINITIONS = BEGIN GGData: TYPE = GGInterfaceTypes.GGData; Segment: TYPE = GGSegmentTypes.Segment; Slice: TYPE = GGModelTypes.Slice; SliceDescriptor: TYPE = GGModelTypes.SliceDescriptor; Traj: TYPE = GGModelTypes.Traj; ItemID: TYPE = RECORD [ slice: Slice _ NIL, traj: Traj _ NIL, seg: Segment _ NIL ]; LooksInfo: TYPE = REF LooksInfoObj; LooksInfoObj: TYPE = RECORD [ owner: ItemID, shape: MatchTurtle.TurtleHeader _ NIL, class: ATOM, type: REF ANY _ NIL, color: Imager.Color _ NIL, fillColor: Imager.Color _ NIL, string: Rope.ROPE _ NIL, font: GGFont.FontData _ NIL, fontTform: GGFont.FontData _ NIL, dashes: DashInfo _ NIL, joints: Imager.StrokeJoint, -- TYPE = {miter, bevel, round} ends: Imager.StrokeEnd, -- TYPE = {square, butt, round} width: REAL, shapeDef, classDef, typeDef, colorDef, fillColorDef, stringDef, fontDef, fontTformDef, dashesDef, jointsDef, endsDef, widthDef: BOOLEAN _ FALSE ]; DashInfo: TYPE = REF DashInfoObj; DashInfoObj: TYPE = RECORD [ dashed: BOOL _ FALSE, pattern: GGModelTypes.SequenceOfReal _ NIL, offset: REAL _ 0.0, length: REAL _ -1.0 ]; SearchInfo: TYPE = REF SearchInfoObj; SearchInfoObj: TYPE = RECORD [ reverse: BOOL _ FALSE, slice: Slice _ NIL, trajs: LIST OF Traj _ NIL, closedTraj: BOOL _ FALSE, segs: LIST OF Segment _ NIL, -- should belong to first traj on list, if slice is an Outline string: Rope.ROPE _ NIL, empty: BOOL _ FALSE ]; ItemMatch: TYPE = REF ItemMatchObj; ItemMatchObj: TYPE = RECORD [ matcher: ItemID, matchee: ItemID, backwards: BOOL _ FALSE ]; MatchDescriptor: TYPE = REF MatchDObj; MatchDObj: TYPE = RECORD [ posD: MatchTurtle.PositionDescriptor _ NIL, isMatch: BOOL _ FALSE, --a complete match has been found matchedSlices: LIST OF SliceDescriptor _ NIL, mapping: LIST OF ItemMatch _ NIL ]; SearchState: TYPE = REF SearchStateObj; SearchStateObj: TYPE = RECORD [ ahead, behind: LIST OF SearchInfo _ NIL, -- SearchInfo's yet to be matched lastDirection: REF ANY _ NIL, -- specifies direction of last search, macroOps: LIST OF LIST OF REF ANY, -- events stored between StartOps and EndOps macroOn: BOOL _ FALSE -- specifies that we're currently saving To Viewer events ]; SearchEvent: GGUserInput.UserInputProc; -- called when search button is pressed Search: PROC [toSearch: GGData, event: LIST OF REF ANY, refresh: BOOL] RETURNS [found: BOOL]; IsEmptySearchInfo: PROC [searchInfo: SearchInfo] RETURNS [BOOL _ FALSE]; HeightSort: PROC [slices: LIST OF Slice, ascending: BOOL] RETURNS [LIST OF Slice]; GetFromLooks: PROC RETURNS [looksList: LIST OF REF ANY _ NIL]; -- returns looks information of objects in the From (source) viewer GetToLooks: PROC RETURNS [looksList: LIST OF REF ANY _ NIL]; -- returns looks information of objects in the To (target) viewer GetLooksOfSlice: PROC [slice: Slice, choice: MatchViewer.ChoiceData, value: BOOL _ TRUE] RETURNS [REF ANY]; GetLooksOfTraj: PROC [traj: Traj, choice: MatchViewer.ChoiceData, value: BOOL _ TRUE] RETURNS [LIST OF LooksInfo]; GetLooksOfSegment: PROC [slice: Slice, traj: Traj, seg: Segment, choice: MatchViewer.ChoiceData, value: BOOL, shape: MatchTurtle.TurtleHeader] RETURNS [looks: LooksInfo]; CreateSearchInfo: PROC [slice: Slice, direction: REF ANY] RETURNS [searchInfo: SearchInfo]; AddSegs: PROC [domain: SearchInfo]; AfterDescriptor: PROC [sliceD: SliceDescriptor, direction: REF ANY] RETURNS [after: SearchInfo _ NIL]; FindMatchInSlice: PROC [domain: SearchInfo, fromLooks: LIST OF REF ANY, direction: REF ANY, matchD: MatchDescriptor] RETURNS [match: SliceDescriptor _ NIL, rest: SearchInfo _ NIL]; LooksEqual: PROC [l1, l2: LooksInfo] RETURNS [BOOL _ TRUE]; RemoveSelected: PROC [infoList: LIST OF SearchInfo, sliceD: SliceDescriptor]; RemoveDescriptorFromInfo: PROC [sliceD: SliceDescriptor, info: SearchInfo]; SearchDisjInit: PROC [them: GGData, event: LIST OF REF ANY]; RemakeDisjList: PROC [theirData: GGData, direction: REF ANY, select: BOOL] RETURNS [toSearch: LIST OF SearchInfo]; SearchDisjNext: PROC [searchList: LIST OF SearchInfo, direction: REF ANY, refresh: BOOL _ TRUE] RETURNS [newSearchList: LIST OF SearchInfo, found: BOOL]; GetSearchState: PROC RETURNS [SearchState]; SearchConjInit: PROC [them: GGData, event: LIST OF REF ANY]; SearchConjNext: PROC [forward, backward: LIST OF SearchInfo, direction: REF ANY, refresh: BOOL _ TRUE] RETURNS [newForward, newBackward: LIST OF SearchInfo, found: BOOL]; CreateMatchDescriptor: PROC [] RETURNS [matchD: MatchDescriptor]; YesEvent: GGUserInput.UserInputProc; -- called when yes button is pressed SelectMapped: PROC [scene: GGModelTypes.Scene, matches: LIST OF ItemMatch]; SelectionFilter: PROC [scene: GGModelTypes.Scene, matches: LIST OF ItemMatch] RETURNS [selectList: LIST OF ItemMatch _ NIL]; SetLastMatchDescriptor: PROC [matchD: MatchDescriptor]; ChangeAll: GGUserInput.UserInputProc; -- called when ChangeAll button is pressed StartOps: PUBLIC GGUserInput.UserInputProc; -- called when StartOps button is pressed EndOps: PUBLIC GGUserInput.UserInputProc; -- called when EndOps button is pressed END. ΔMatch.mesa Last edited by: David Kurlander - September 6, 1987 5:21:25 pm PDT Bier, September 4, 1987 11:08:30 pm PDT Type Definitions Procedure Definitions In MatchImplA In MatchImplB ΚΦ˜J™ codešœB™BK™'—J™šΟk ˜ Kšœ‚˜‚K˜—JšΟnœœ œ˜ ™Kšœœ˜'Kšœ œ˜'Kšœœ˜!Kšœœ ˜5Kšœœ˜K™—KšΟb™šœœœ˜Kšœœ˜Kšœ œ˜Kšœ˜K˜—Kšœ œœ˜#šœœœ˜K˜Kšœ"œ˜&Kšœœ˜ Kšœœœœ˜Kšœœ˜Kšœœ˜Kšœ œœ˜Kšœœ˜Kšœœ˜!Kšœœ˜KšœΟc˜;Kšœ ˜7Kšœœ˜ Kšœ€œ˜K˜—Kšœ œœ ˜!šœ œœ˜Kšœœœ˜Kšœ'œ˜+Kšœœ˜Kšœœ˜K˜—Jšœ œœ˜%šœœœ˜Jšœ œœ˜Jšœœ˜Jšœœœœ˜Jšœ œœ˜Jšœœœ œ >˜[Jšœ œ˜Jšœœ˜J˜—Jšœ œœ˜#šœœœ˜J˜J˜Jšœ œ˜J˜—Jšœœœ ˜&šœ œœ˜Jšœ'œ˜+Jšœ œœ !˜8Jšœœœœ˜-Jšœ œœ ˜ J˜—Jšœ œœ˜'šœœœ˜Jšœœœœ "˜KJšœœœ &˜DJšœ œœœœœœ ,˜OJšœ œœ 9˜OJ˜J˜—KšŸ™K™ Kšž œ '˜OJšžœœœœœœ œœ œ˜]Jš žœœœœœ˜HJšž œœ œœœœœœ˜RJšž œœœ œœœœœ C˜‚Kšž œœœ œœœœœ A˜~Kšžœœ7œœœœœ˜kKšžœœ5œœœœœ ˜rKšžœœQœ#œ˜ͺJš žœœœœœ˜[Jšžœœ˜#Jš žœœ&œœœœ˜fKšžœœ!œœœœ œœœœœ˜΄Jš ž œœœœœ˜;Kšžœœ œœ&˜MKšžœœ-˜KKš žœœœœœœ˜