<> <> <> <<>> <> <> DIRECTORY Icons USING [IconFlavor], Rope USING [ROPE], ViewerClasses USING [Viewer, ViewerFlavor], ViewerTools USING [TiogaContents]; WhiteboardViewers: CEDAR DEFINITIONS = BEGIN OPEN Rope; Viewer: TYPE = ViewerClasses.Viewer; wb: READONLY ViewerClasses.ViewerFlavor; <> icon: READONLY ViewerClasses.ViewerFlavor; <> text: READONLY ViewerClasses.ViewerFlavor; <> SetMenu: PROC[v: Viewer]; <> AddTextBox: PROCEDURE[wb: Viewer, x, y, w, h: INTEGER, contents: ViewerTools.TiogaContents] RETURNS[child: Viewer]; <> AddIcon: PROCEDURE[wb: Viewer, name: ROPE, icon: Icons.IconFlavor, x, y: INTEGER] RETURNS[child: Viewer]; <> InvertIcon: PROC[icon: Viewer, paint: BOOL _ TRUE]; <> GetGrid: PROC[v: Viewer] RETURNS[grid: INT]; <> SetGrid: PROC[v: Viewer, grid: INT]; <> ResetGrid: PROC[v: Viewer, grid: INT]; <> MoveChild: PROCEDURE[child: Viewer]; <> GrowBox: PROCEDURE[wb, box: Viewer, x, y: INTEGER]; <> NearestChild: PROCEDURE[wb: Viewer, x, y: INTEGER, type: ViewerClasses.ViewerFlavor _ NIL] RETURNS[nearest: Viewer]; <> Expand: PROC[parent, wb: Viewer, wbList: LIST OF ROPE]; <> <<>> DontLog: PROC[icon: Viewer] RETURNS [BOOLEAN]; <> SetWBName: PROC[wb: Viewer, name: ROPE, paint: BOOLEAN _ TRUE]; <".>> <<>> END...