<> <> <<11/17/87 - this may be obsoleted by MathDisplay.mesa>> <<>> DIRECTORY InternalExpr USING [EXPR], Imager USING [Context, Color]; BoxTree: CEDAR DEFINITIONS ~ BEGIN <> <<>> BOXTREE: TYPE ~ REF BoxTreeRep; BoxTreeRep: TYPE ; -- use implementation type STYLE: TYPE ~ RECORD [ scale: REAL _ 1.0, -- scaling factor for bounding box looks: REF ANY _ NIL -- italics, bold... ]; Selection: TYPE ~ RECORD[expr: InternalExpr.EXPR, color: Imager.Color]; <<>> <> Format: PUBLIC PROC [expr: InternalExpr.EXPR, style: STYLE] RETURNS [boxTree: BOXTREE]; <> Paint: PUBLIC PROC [boxTree: BOXTREE, context: Imager.Context, selections: LIST OF Selection]; <> <> <<>> Selectable: PROC[expr: InternalExpr.EXPR] RETURNS[BOOL]; <> <<>> SelectableParent: PROC[expr: InternalExpr.EXPR] RETURNS[InternalExpr.EXPR]; <> << SIGNALS noSelection if no selectable parent exists.>> <<>> SelectableChild: PROC[expr: InternalExpr.EXPR] RETURNS[InternalExpr.EXPR]; <> << SIGNALS noSelection if no selectable child exists.>> SelectableSibling: PROC[expr: InternalExpr.EXPR] RETURNS[InternalExpr.EXPR]; <> << SIGNALS noSelection if no selectable sibling exists.>> <<>> Replace: PROC[expr, old, new: InternalExpr.EXPR] RETURNS[InternalExpr.EXPR]; <> <> << Note that new is used (not a copy).>> <> <<>> unable: ERROR[reason: ATOM]; noSelection: ERROR; END.