DIRECTORY Graphics, GraphicsOps, Process, PseudoCursors, UserTerminal, ViewerOps, ViewerClasses; PseudoCursorsImpl: CEDAR MONITOR IMPORTS Graphics, GraphicsOps, Process, ViewerOps EXPORTS PseudoCursors = BEGIN PseudoCursor: TYPE = PseudoCursors.PseudoCursor; DataRec: TYPE = RECORD [ bits: REF UserTerminal.CursorArray, bitMap: GraphicsOps.BitmapRef, newData: BOOLEAN _ FALSE, paint: PROCESS _ NIL, timeout: CONDITION ]; waitTime: Process.Ticks _ Process.MsecToTicks[100]; Create: PUBLIC PROC [parent: ViewerClasses.Viewer, x, y: INTEGER _ 0] RETURNS [pseudoCursor: PseudoCursor] = TRUSTED { data: REF DataRec _ NEW[DataRec]; data.bits _ NEW[UserTerminal.CursorArray]; data.bitMap _ NEW[GraphicsOps.BitmapRep _ [base: data.bits, raster: 1, width: 16, height: 16]]; Process.InitializeCondition[@data.timeout, waitTime]; pseudoCursor _ ViewerOps.CreateViewer[flavor: $PsuedoCursor, info: [parent: parent, wx: x, wy: y, ww: 16, wh: 16, data: data, border: FALSE], paint: FALSE]; }; Set: PUBLIC ENTRY PROC [pseudoCursor: PseudoCursor, bits: REF UserTerminal.CursorArray] = BEGIN ENABLE UNWIND => {}; d: REF DataRec _ NARROW[pseudoCursor.data]; IF bits=NIL THEN {bits _ NEW[UserTerminal.CursorArray _ ALL[0]]}; d.bits^ _ bits^; d.newData _ TRUE; IF d.paint = NIL THEN TRUSTED{Process.Detach[d.paint _ FORK PaintProcess[pseudoCursor]]}; END; PaintProcess: ENTRY PROCEDURE [pseudoCursor: PseudoCursor] = BEGIN ENABLE UNWIND => {}; d: REF DataRec _ NARROW[pseudoCursor.data]; WHILE d.newData DO d.newData _ FALSE; TRUSTED{ViewerOps.PaintViewer[pseudoCursor, client, FALSE, $Update]}; WAIT d.timeout; ENDLOOP; d.paint _ NIL; END; PseudoCursorPaint: ViewerClasses.PaintProc = BEGIN Graphics.SetCP[context, 0, 16]; GraphicsOps.DrawBitmap[context, NARROW[self.data, REF DataRec].bitMap, 16, 16]; END; psuedoCursor: ViewerClasses.ViewerClass _ NEW[ViewerClasses.ViewerClassRec _ [ paint: PseudoCursorPaint, tipTable: NIL ]]; TRUSTED{ViewerOps.RegisterViewerClass[$PsuedoCursor, psuedoCursor]}; -- plug in to Viewers END. Michael Plass, September 15, 1982 12:15 pm: Increased waitTime from 50ms to 100 ms. Michael Plass, November 2, 1982 10:48 am. CEDARized. tPseudoCursorsImpl.mesa Michael Plass, November 2, 1982 10:48 am Last Edited by: Beach, May 24, 1983 9:12 am ΚΈ– "cedar" style˜J˜JšΟc™Jšœ™)J™+šΟk ˜ J˜ J˜ J˜J˜J˜ J˜ J˜J˜—Jšœž ˜ Jšžœ+žœ˜JJšž˜J˜Jšœžœ˜0J˜šœ žœžœ˜Jšœžœ˜#J˜Jšœ žœžœ˜Jšœžœžœ˜Jšœ ž ˜J˜J˜—J˜3J˜šΟnœžœžœ&žœ˜EJšžœ žœ˜0Jšœžœ žœ ˜!Jšœ žœ˜*JšœžœN˜_J˜5Jšœ†žœ žœ˜œJ˜J˜—š Ÿœžœžœžœ$žœ˜YJšžœžœžœ˜Jšœžœ žœ˜+šžœžœž˜Jšœžœžœ˜0—J˜Jšœ žœ˜Jš žœ žœžœžœžœ˜YJšžœ˜J˜—šŸ œžœž œ˜˜ZJ˜J˜Jšžœ˜J˜J˜SJ˜4—…—r ž