--Interface to low level display stuff --M. Stone February 17, 1983 3:10 pm -- Last Edited by: Pier, February 13, 1984 3:22:14 pm PST DIRECTORY Graphics USING[ PaintMode, Color, Context], Font USING[FONT], PointDefs USING[ScrPt]; ScreenDefs: DEFINITIONS = BEGIN OPEN PointDefs; Context: TYPE = Graphics.Context; BlockPtr: TYPE = REF Block; Block: TYPE = RECORD [ --mostly for source blocks like tokens base: LONG POINTER, raster: CARDINAL, lx,ty,w,h: INTEGER --since usually source, not really a screen point ]; GreyType: TYPE = Graphics.Color; JunctionType: TYPE = {round,square,angled}; EndType: TYPE = RECORD [type: SELECT xx: * FROM round,flat => NULL, angled => [From,To: ScrPt], --clipping edge, keep on right ENDCASE ]; --routines exported by ScreenFns ScreenFns: PROGRAM; SetViewport: PROCEDURE [width,height: INTEGER]; ClearScreen: PROCEDURE[dc: Context]; SetClipEdges: PROCEDURE [tl,br: ScrPt]; --return a box clipped to screen ClipToScreen: PROCEDURE [tl,br: ScrPt] RETURNS [ScrPt, ScrPt]; ClipPointToScreen: PUBLIC PROC [pt: ScrPt] RETURNS [ScrPt]; ResetClipEdges: PROCEDURE;--changes clipping edges of current screen to size at init --clip options are because someone higher up might do some culling ClipperState: TYPE = {clip,cull,inside}; PrimeClipper: PROC [tl,br: PointDefs.ScrPt] RETURNS [ClipperState]; ClipOn: PROCEDURE; --resets PrimeClipper Function: TYPE = Graphics.PaintMode; SetFunction: PROCEDURE [fnc: Function]; --All of these assume the current Display state SetLineParms: PROCEDURE [width: INTEGER, grey: GreyType]; StartChain: PROCEDURE[pt: ScrPt, dc: Context]; NextChainPoint: PROCEDURE[dx,dy: INTEGER, dc: Context]; EndChain: PROCEDURE[dc: Context]; BLTBlockInScreen: PROCEDURE [src: BlockPtr, tl: PointDefs.ScrPt, fnc: Function, dc: Context ]; DrawChar: PROCEDURE [font: Font.FONT, origin: PointDefs.ScrPt, char: CHAR, dc: Context ]; MoveScreenBox: PROCEDURE[tl,br: ScrPt,dx,dy: INTEGER]; EraseBox: PUBLIC PROCEDURE[tl,br: ScrPt, dc: Context]; InvertBox: PUBLIC PROCEDURE[tl,br: ScrPt, dc: Context]; --for areas. SetFillParms: PROCEDURE [grey: GreyType]; --for scan conversion. Gets scanline and offset in CGDevice coordinates --routine in Encoding calls these paired procedures in order, and does translate for NextScanLine StartArea: PUBLIC PROCEDURE[y: INTEGER, dc: Context] RETURNS[yScan,xOffset: INTEGER]; --These parameters are in CGDevice coordinates NextScanLine: PROCEDURE[y,lx,rx: INTEGER, dc: Context]; --These parameters are in ScrPt coordinates BoxFill: PROCEDURE[tl,br: ScrPt, dc: Context]; GetGridParameters: PROCEDURE RETURNS[center: ScrPt,hgridlx,hgridrx,vgridty,vgridby,gridt: INTEGER]; BltVGrid: PROCEDURE[lx: INTEGER, dc: Context]; BltHGrid: PROCEDURE[ty: INTEGER, dc: Context]; END. Źģ˜JšćĻc‡œĻk œ žœ$žœžœžœž œžœžœžœ žœžœžœžœ'œžœžœ žœžœ2œžœ!žœ#žœžœ žœžœžœ œžœ!œ žœĻn œž œžœŸ œž œŸ œž œ!Ÿ œž œžœŸœžœžœ žœ Ÿœž œ;œCœžœŸ œžœžœŸœž œœ žœŸ œž œ0Ÿ œž œ žœŸ œž œŸœž œžœŸœž œŸœž œJŸœž œžœ#žœŸ œž œžœŸœžœž œŸ œžœž œŸ œž œŖœŸ œžœž œžœžœžœŸ.Ÿ œž œ žœŸŸĻiŸœž œŸœž œžœ6žœŸœž œžœŸœž œžœžœ˜ą—…— ā Ō