<> <> <> <> <<>> DIRECTORY CD, Rope USING [ROPE], Imager USING [Font, VEC]; CDTexts: CEDAR DEFINITIONS = BEGIN <> IsRigidText: PROC [ob: CD.Object] RETURNS [BOOL] = INLINE { RETURN [ ob.class=rigidTextClass ] }; IsFlipText: PROC [ob: CD.Object] RETURNS [BOOL] = INLINE { RETURN [ ob.class=flipTextClass ] }; IsText: PROC [ob: CD.Object] RETURNS [BOOL] = INLINE { RETURN [ ob.class=rigidTextClass OR ob.class=flipTextClass ] }; TextSpecific: TYPE = REF TextRec; TextRec: TYPE = RECORD [ text: Rope.ROPE, cdFont: CDFont ]; CDFont: TYPE = REF --READONLY-- FontRec; FontRec: TYPE = RECORD [ --readonly to clients except properties font: Imager.Font, xy: Imager.VEC, scaleI: INT _ 1, origin: CD.Position, height: CD.Number _ -1, isPlaceHolder: BOOL _ FALSE, supposedKey: Rope.ROPE, supposedName: Rope.ROPE, substitutedFont: Imager.Font, format: PRIVATE INT, data: PRIVATE REF ANY _ NIL, --for CDTextsImpl properties: CD.PropRef ]; Create: PROC [text: Rope.ROPE, font: REF ANY, layer: CD.Layer _ CD.commentLayer, flip: BOOL_TRUE] RETURNS [CD.Object]; MakeFont: PROC [name: Rope.ROPE, scale: CD.Number _ 2] RETURNS [CDFont]; <<--use lambda for good scale>> rigidTextClass: PRIVATE CD.ObjectClass; flipTextClass: PRIVATE CD.ObjectClass; END.