DIRECTORY Rope USING [ROPE], Stretch USING [Direction], CD USING [Design, ObPtr, ApplicationPtr, Position, Level, combined]; StretchLines: CEDAR DEFINITIONS = BEGIN LineData: TYPE = RECORD [ point: CD.Position, -- left (or lower) endpoint of stretch line length: INT _ 1, -- length of line (forced be be equal or greater than some minimum) direction: LineDirections _ up, -- the direction to stretch in type: LineTypes _ pointed, -- type type of object label: Rope.ROPE _ NIL, -- the attached label level: CD.Level _ CD.combined -- The level (or layer) that it refers to. If value is CD.combined and type = blunt and we know what design it is being placed in, then it is set to that design's current default level. Always set to 'combined' for pointed lines ]; LineTypes: TYPE = {pointed, blunt}; LineDirections: TYPE = Stretch.Direction; Place: PROC [into: CD.Design, line: LineData, shift: BOOL _ TRUE]; Find: PROC [ob: CD.ObPtr, label: Rope.ROPE] RETURNS [REF LineData]; FindList: PROC [ob: CD.ObPtr] RETURNS [LIST OF LineData]; objAtom: READONLY ATOM; -- Contains the atom that stretch lines are tagged with. MakeLineAptr: PROC [line: LineData, shift: BOOL _ TRUE] RETURNS [CD.ApplicationPtr]; AptrToLine: PROC [aptr: CD.ApplicationPtr] RETURNS [REF LineData]; END. ¨File: StretchLines.mesa Copyright c 1984 by Xerox Corporation. All rights reserved. Created by: Bob Mayo, July 2, 1984 2:53:37 pm PDT Last Edited by: Mayo, November 5, 1984 6:38:03 pm PST -- StretchLines: Add stretch lines to ChipNDale. Stretch Lines are named line segments and come in two flavors: pointed and blunt. The tiler package interprets the pointed lines as designating that the entire cell should be stretched along that line, while the blunted ones are interpreted as meaning just stretch the goemetry under the line without moving anything else. -- Place stretch line. If shift = TRUE then shift the object so that the line is at the point specified, if FALSE the lower left corner of the object (not the line) goes at the point specified. -- Find a stretch line with the given label in a cell. -- Find all stretch lines in a cell. -- back door procedures -- -- Like above, but returns an application that is not included in any design. Returns NIL if an error occured (such as no level specified for a blunt line). -- Given a ChipNDale application that points to a stretch line, return it's information. Returns NIL if the application is not a stretch line. Ê ˜šœ™Jšœ Ïmœ1™˜FJ˜—JšÏb œžœž œ˜"Jšž˜˜šŸœžœžœ˜Jšœžœ Ïc+˜AJšœžœ C˜WJšœ  ˜>Jšœ ˜2Jšœ žœžœ ˜/Jšœžœ žœ  æ˜„J˜—JšŸ œžœ˜#JšŸœžœ˜)J˜Jš #Ðck ›™ÂJš Ïnœžœžœ žœžœ˜BJ™J™6Jš ¢œžœžœžœžœžœ ˜C—˜J™$Jš ¢œžœžœžœžœžœ ˜9—˜J™J™J˜JšŸœžœžœ 8˜PJ™Jš ™Jš ¢ œžœžœžœžœžœ˜TJ˜Jšœ™Jš ¢ œžœžœžœžœ ˜BJ˜—Jšžœ˜J˜J˜J˜—…— È