<> <> <> <<>> <> <<>> <> DIRECTORY Atom USING [PropList], Imager USING [Box, Context, Font, Transformation, VEC, XChar], NodeStyle USING [Ref], Real USING [LargestNumber], Rope USING [ROPE], TextNode USING [Location]; TiogaImager: CEDAR DEFINITIONS ~ BEGIN <> <<>> <> <<>> Box: TYPE ~ REF BoxRep; BoxRep: TYPE ~ RECORD [ nChars: INT, bounds: Imager.Box, expansion: Imager.VEC, -- factor applied to stretch or shrink of component boxes escapement: Imager.VEC, stretch: Imager.VEC, shrink: Imager.VEC, class: Class, duplicate: BOOL _ FALSE, data: REF, props: Atom.PropList _ NIL ]; <> FormatLine: PROC [start: TextNode.Location, lineWidth: REAL, style: NodeStyle.Ref, screenStyle: BOOL _ FALSE] RETURNS [Box]; FilterProc: TYPE ~ PROC [node: TextNode.Location, level: INT, position: Imager.VEC] RETURNS [skip: BOOL _ FALSE, stop: BOOL _ FALSE, maxLineLength: REAL _ Real.LargestNumber]; InsertID: TYPE ~ {nil, head, top, normal, bottom, foot}; SepProc: TYPE ~ PROC [InsertID] RETURNS [LIST OF Box]; FormattedNodes: TYPE ~ RECORD [box: Box, resume: TextNode.Location]; FormatNodes: PROC [start: TextNode.Location, bounds: Imager.VEC, screenStyle: BOOL _ FALSE, filter: FilterProc _ NIL, sep: SepProc _ NIL] RETURNS [FormattedNodes]; Marks: TYPE ~ Atom.PropList; FormattedPage: TYPE ~ RECORD [ box: Box, <> nextLoc: TextNode.Location, <> marks: Marks, <> pageFigure: INT <> ]; FormatPage: PROC [pageCounter: INT, startLoc: TextNode.Location, filter: FilterProc _ NIL, marks: Marks _ NIL, screenStyle: BOOL _ FALSE] RETURNS [FormattedPage]; <> EmptyBox: PROC [escapement: Imager.VEC _ [0,0], stretch: Imager.VEC _ [0,0], shrink: Imager.VEC _ [0,0]] RETURNS [Box]; BoxFromChar: PROC [font: Imager.Font, char: CHAR] RETURNS [Box]; BoxFromXChar: PROC [font: Imager.Font, xchar: Imager.XChar] RETURNS [Box]; BoxFromRope: PROC [font: Imager.Font, rope: Rope.ROPE] RETURNS [Box]; BoxFromList: PROC [list: LIST OF Box, xFix, yFix: Fix _ []] RETURNS [Box]; Fix: TYPE ~ RECORD [ what: {expansion, size} _ expansion, value: REAL _ 0.0 ]; Overlay: PROC [base, new: Box, offset: Imager.VEC] RETURNS [Box]; <> <> <> <> Composite: PROC [box: Box] RETURNS [BOOL]; <> UnBox: PROC [box: Box] RETURNS [LIST OF Box]; ModifyBox: PROC [box: Box, m: Imager.Transformation] RETURNS [Box]; Render: PROC [box: Box, context: Imager.Context, position: Imager.VEC]; <> Resolve: PROC [box: Box, p: Imager.VEC] RETURNS [TextNode.Location]; <> <> FirstLocWithin: PROC [box: Box] RETURNS [TextNode.Location]; Destroy: PROC [box: Box]; <> <<>> Duplicate: PROC [box: Box]; <> <<>> <> Boxes: TYPE ~ RECORD [ list: LIST OF Box _ NIL, last: LIST OF Box _ NIL ]; AppendList: PROC [boxes: Boxes, list: LIST OF Box] RETURNS [Boxes]; <> AppendBox: PROC [boxes: Boxes, box: Box] RETURNS [Boxes]; <> <> Class: TYPE ~ REF ClassRep; ClassRep: TYPE ~ RECORD [ Composite: PROC [box: Box] RETURNS [BOOL], UnBox: PROC [box: Box] RETURNS [LIST OF Box], Render: PROC [box: Box, context: Imager.Context, position: Imager.VEC], Resolve: PROC [box: Box, p: Imager.VEC] RETURNS [TextNode.Location], FirstLocWithin: PROC [box: Box] RETURNS [TextNode.Location], Destroy: PROC [box: Box] ]; <<>> END.