-- TiogaDisplayTableImpl.mesa; Written by S. McGregor, June 1983
-- Edited by McGregor, July 11, 1983 11:11 am
DIRECTORY
TiogaDisplayTable,
TiogaNode USING [Location, Ref, RefBranchNode, Span],
TiogaNodeOps USING [LastLocWithin];
TiogaDisplayTableImpl: CEDAR PROGRAM
IMPORTS TiogaNodeOps
EXPORTS TiogaDisplayTable = BEGIN OPEN TiogaDisplayTable;
***** Partial invalidation of display tables *****
StorePageRectangle: PUBLIC PROC [dt: DisplayTable, index: INTEGER, pr: PageRectangle] = BEGIN
IF index>dt.objects.maxRectangle THEN SetSize[dt, MIN[1, dt.objects.maxRectangle]*2];
dt.objects[index] ← pr;
dt.lastY ← MAX[dt.lastY, pr.yOffset+pr.height];
dt.lastIndexUsed ← MAX[dt.lastIndexUsed, index];
END;
***** Partial invalidation of display tables *****
InvalidateSpan: PUBLIC PROC [dt: DisplayTable, span: TiogaNode.Span] = BEGIN
ERROR; -- Not Yet Implemented
END;
InvalidateChildren: PUBLIC PROC [dt: DisplayTable, parent: TiogaNode.Ref] = BEGIN
-- invalidate lines for children of node
child: TiogaNode.Ref;
span: TiogaNode.Span;
IF (child ← TiogaNode.FirstChild[node])=NIL THEN RETURN;
span ← [[child,0],TiogaNodeOps.LastLocWithin[parent]];
InvalidateSpan[dt, span];
END;
InvalidateBranch: PUBLIC PROC [dt: DisplayTable, node: TiogaNode.RefBranchNode] = BEGIN
-- invalidate lines for children of node
span: TiogaNode.Span ← [[node,0],TiogaNodeOps.LastLocWithin[node]];
InvalidateSpan[dt, span];
END;
VerticalScroll: PUBLIC PROC [dt: DisplayTable, upLines: INTEGER] = BEGIN
ERROR; -- Not Yet Implemented
END;
***** Coordinate to rectangle mapping *****
Resolve: PUBLIC PROC [dt: DisplayTable, x, y: INTEGER, useClosest: BOOLTRUE]
RETURNS [index: INTEGER ← notFound, mappedX, mappedY: INTEGER] = BEGIN
ERROR; -- Not Yet Implemented
END;
***** Table size management *****
New: PUBLIC PROC [nEntries: INTEGER] RETURNS [dt: DisplayTable] = BEGIN
ERROR; -- Not Yet Implemented
END;
SetSize: PUBLIC PROC [dt: DisplayTable, nEntries: INTEGER] = BEGIN
ERROR; -- Not Yet Implemented
END;
END.