DIRECTORY CD, Pipal, PipalInt, PipalOps, ViewerClasses; PipalUI: CEDAR DEFINITIONS = BEGIN Design: TYPE = REF DesignRec; DesignRec: PRIVATE TYPE = CD.DesignRec; DesignRoot: PROC [design: Design] RETURNS [root: Pipal.Object]; HighlightDesign: PROC [design: Design, transformation: PipalInt.Transformation _ [], object: Pipal.Object _ NIL, viewer: ViewerClasses.Viewer _ NIL, label: Pipal.ROPE _ NIL, rescale: BOOL _ TRUE]; FindViewer: PROC [design: Design, label: Pipal.ROPE _ NIL] RETURNS [viewer: ViewerClasses.Viewer _ NIL]; EachSelectedProc: TYPE = PROC [path: PipalOps.Path, trans: PipalInt.Transformation, child: Pipal.Object] RETURNS [quit: BOOL _ FALSE]; EnumerateSelectedObjects: PROC [design: Design, each: EachSelectedProc] RETURNS [quit: BOOL _ FALSE]; TheSelectedObject: PROC [design: Design] RETURNS [thePath: PipalOps.Path, theTrans: PipalInt.Transformation, theChild: Pipal.Object _ NIL]; SelectInstance: PROC [design: Design, path: PipalOps.Path] RETURNS [done: BOOL]; PushInstance: PROC [design: Design, path: PipalOps.Path] RETURNS [done: BOOL]; ReplaceMethod: TYPE = {interactive, all, alongPath}; ReplaceInDesign: PROC [design: Design, path: PipalOps.Path, table: PipalOps.ReplaceTable, replaceMethod: ReplaceMethod]; CommandProc: TYPE = PROC [design: Design, pos, spos: PipalInt.Position, data, issuer: REF]; RegisterCommand: PROC [key: ATOM, proc: CommandProc, queue, markChanged: BOOL _ TRUE, data: REF _ NIL]; ReplaceCommandProc: TYPE = PROC [design: Design, object: Pipal.Object, table: PipalOps.ReplaceTable, data, issuer: REF]; RegisterReplaceSelectionCommand: PROC [key: ATOM, proc: ReplaceCommandProc, allSelected: BOOL, replaceMethod: ReplaceMethod, queue, markChanged: BOOL _ TRUE, data: REF _ NIL]; Contains: PROC [object: Pipal.Object, candidateTrans: PipalInt.Transformation, candidateObject: Pipal.Object] RETURNS [BOOL]; SameInstances: PROC [trans1: PipalInt.Transformation, object1: Pipal.Object, trans2: PipalInt.Transformation, object2: Pipal.Object] RETURNS [BOOL]; TopInstanceLists: TYPE = LIST OF RECORD [design: Design, tops: Pipal.Object]; GetTopInstances: PROC [design: Design] RETURNS [topInstances: TopInstanceLists _ NIL]; schematicLambda: INT; schematicFudge: INT; FetchKeyLine: PROC [fileName, key: Pipal.ROPE] RETURNS [entry: Pipal.ROPE _ NIL]; ExecuteInTerminal: PROC [entry: Pipal.ROPE]; Draw: PROC [object: Pipal.Object] RETURNS [design: Design]; END. ‚PipalUI.mesa Copyright Σ 1988 by Xerox Corporation. All rights reserved. Created by Bertrand Serlet March 17, 1988 2:33:02 pm PST Bertrand Serlet May 15, 1988 8:41:49 pm PDT Design Highlight and Viewer If highlight is NIL, all previous highlight is removed. If viewer is NIL then applies to all viewers of design. If rescale, viewers scale to the best zoom on the highlighted area. Finds a single viewer for the design. Picks the last viewer if it belongs to the design, otherwise picks a random viewer belonging to the design if any exist, otherwise creates a viewer for the design. If a viewer is created and the label is not NIL then ViewerOps.SetViewer[viewer: viewer, data: label, op: $Label]. Selection Enumerate selected objects in the coordinate system of the design. The selected objects belong to the deepest pushed cell. Returns the single selected object. Barks if none or several. Selects the object corresponding to object in the currently pushed in cell. Push Replacement Command Registration Registers a procedure to be called as command. key: (TIP-Table) key to call command; table: ReplaceTable, initially empty; data: registration data; issuer: typically describes issuer the command such as the viewer. allSelected decides whether proc should be applied to all selections or just to the unique selection (and emit a warnung if there is not a single selection). Object Comparisons Returns TRUE iff some child of object (or object itself) is REF equal to candidateObject (or REF equal to all its decendants), with the appropriate transformation. Simultaneous Contains Junk Yard gets all the top level instances, including for imported designs Random used for example in PatchWork for deciding whether things more or less abut. Searches for a line starting with key in file. Returns the rest of the line found or NIL if not found. Debug Creates a new CD viewer that displays the object. Κ ˜code•Mark outsideHeaderšœ ™ Kšœ<™K™—šžœœ'œœ˜PKšœK™K——™Kšž œœ'œœ˜N—™ Kšœœ!˜4Kšžœœc˜x—™Kšœ œœ>œ˜[šžœœœ)œœœœ˜gKšœ.™.Kšœœ™%—šœœœTœ˜xJ™%Kšœ™KšœB™B—šžœœœ)œ4œœœœ˜―Kšœ™——™šžœœ`œœ˜}Kšœ£™£K™—šž œœrœœ˜”Jšœ™K˜——™ š œœœœœ&˜MK˜—šžœœœ#œ˜VK™@——™Kšœœ˜šœœ˜K™LK™—š ž œœœœœœ˜QKšœVœ™g—Kšžœœœ˜,—™šžœœœ˜;Jšœœ#™3K˜——Kšœ˜—…— n