<> <> <> <> <<>> <<-- Stretch: Stretch an arbitrary object in X or Y.>> DIRECTORY Rope USING [ROPE], CD USING [ObPtr]; Stretch: CEDAR DEFINITIONS = BEGIN <> Direction: TYPE = {up, down, left, right}; <> StretchProc: TYPE = PROC [obj: CD.ObPtr, place: INT, dir: Direction, amount: INT] RETURNS [CD.ObPtr, Rope.ROPE]; <<-- obj is the object to be stretched>> <<-- place is the coordinate to be stretched at >> <<-- dir is the direction in which to stretch. Edges that lie exactly on 'place' are moved in this direction, as well as any edge past 'place' in direction 'dir'>> <<-- amount is the amount of stretch in design coordinates (NOT lambda)>> <<-- return value is either a new object or a rope telling what went wrong.>> <> DoStretch: PROC [obj: CD.ObPtr, place: INT, dir: Direction, amount: INT] RETURNS [CD.ObPtr, Rope.ROPE]; END.