<> <> DIRECTORY TableBase, TableLayout, TSArtwork, TSGraphic, TSOutput, TSOutputDisplay, ViewerClasses, ViewerOps; TSTableImpl: CEDAR PROGRAM IMPORTS TableBase, TableLayout, TSArtwork, ViewerOps = BEGIN TableFromBranch: TSArtwork.ObjectFromBranchProc = { object _ NEW[TSGraphic.ObjectRec]; object.paintProc _ TablePaintProc; object.layoutProc _ TableLayoutProc; object.data _ TableBase.BranchToTable[node]; }; TableLayoutProc: TSGraphic.LayoutProc = { table: TableBase.RefTable _ NARROW[self.data]; extent _ TableLayout.LayoutTable[table, maxX, maxY, suggestedX, suggestedY]; }; TablePaintProc: TSGraphic.PaintProc = { table: TableBase.RefTable _ NARROW[self.data]; handle: TSOutput.Handle _ NARROW[context]; table.originX _ originX; table.originY _ originY; TableLayout.PaintTable[table, handle, originX, originY, extent]; IF ISTYPE[handle.outputState, TSOutputDisplay.DisplayState] THEN { displayState: TSOutputDisplay.DisplayState _ NARROW[handle.outputState, TSOutputDisplay.DisplayState]; v: ViewerClasses.Viewer _ displayState.viewer; IF v # NIL THEN ViewerOps.AddProp[v, $TableRef, table]; }; }; TSArtwork.Register["Table", TableFromBranch]; END.