-- TSGraphic.mesa
-- Michael Plass, June 9, 1982 10:34 am
-- Definitions for embedding graphical objects in typeset documents.
DIRECTORY
TSGlue, TSTypes;
TSGraphic: DEFINITIONS =
BEGIN
Dimn: TYPE = TSTypes.Dimn;
nilDimn: Dimn = TSTypes.nilDimn;
Paint: PaintProc = INLINE {self.paintProc[self, context, originX, originY, extent]};
Layout: LayoutProc = INLINE {[flexX, flexY] ← self.layoutProc[self, maxX, maxY, suggestedX, suggestedY]};
Object: TYPE = REF ObjectRec;
ObjectRec: TYPE = RECORD [
paintProc: PaintProc, -- procedure to call to draw the object
layoutProc: LayoutProc, -- procedure that determines the extent of the object
data: REF ANY -- data the procedures need
];
PaintProc: TYPE = PROCEDURE [
self: Object,
context: REF ANY, -- a TSOutput.Handle
originX, originY: Dimn, -- this is where to paint it
extent: TSTypes.Dimensions
];
LayoutProc: TYPE = PROCEDURE [
self: Object,
maxX, maxY: Dimn ← nilDimn,
suggestedX, suggestedY: Dimn ← nilDimn
] RETURNS [flexX, flexY: TSGlue.Glue];
END.