--Griffin encoding types --m.stone November 2, 1979 6:26 PM DIRECTORY AltoDefs: FROM "AltoDefs" USING[BYTE], PointDefs: FROM "PointDefs"; EncodingDefs: DEFINITIONS = BEGIN ChainEncoding: TYPE = RECORD [link: POINTER TO ChainEncoding, linknumber: [0..255], tl,br: PointDefs.ScrPt, --bounding box p0: PointDefs.ScrPt, --starting point octants: DESCRIPTOR FOR PACKED ARRAY OF AltoDefs.BYTE, bits: ARRAY [0..3] OF CARDINAL]; LongRun: TYPE = RECORD [lx,dx: INTEGER]; ShortRun: TYPE = RECORD [lx,dx: AltoDefs.BYTE]; AreaEncoding: TYPE = RECORD [link: POINTER TO AreaEncoding, tl,br: PointDefs.ScrPt, --bounding box. tl is origin codes: SELECT rep: * FROM --could be overlaid, except would like to expand some day shortrun => [runs: DESCRIPTOR FOR ARRAY OF ShortRun], longrun => [runs: DESCRIPTOR FOR ARRAY OF LongRun], ENDCASE ]; --implemented by encoding AddChainPoint: PROCEDURE[PointDefs.ScrPt]; AddChainLine: PUBLIC PROCEDURE[PointDefs.ScrPt]; MakeChainEncoding: PROCEDURE RETURNS[POINTER TO ChainEncoding]; PlotChainChunk: PROCEDURE [encoding: POINTER TO ChainEncoding,PlotDot: PROCEDURE[PointDefs.ScrPt] ]; DeleteChainEncoding: PROCEDURE[POINTER TO ChainEncoding]; MakeAreaEncoding: PROCEDURE[POINTER TO ChainEncoding] RETURNS[POINTER TO AreaEncoding]; PlotAreaChunk: PUBLIC PROCEDURE[encoding: POINTER TO AreaEncoding, HLine: PROCEDURE[y,lx,dx: INTEGER] ]; DeleteAreaEncoding: PROCEDURE[POINTER TO AreaEncoding]; END.