DIRECTORY ImagerBackdoor USING [DrawBits], Process USING [Detach, InitializeCondition, MsecToTicks, Ticks], PseudoCursors USING [PseudoCursor], TerminalDefs USING [Cursor], ViewerClasses USING [PaintProc, Viewer, ViewerClass, ViewerClassRec], ViewerOps USING [CreateViewer, PaintViewer, RegisterViewerClass]; PseudoCursorsImpl: CEDAR MONITOR IMPORTS ImagerBackdoor, Process, ViewerOps EXPORTS PseudoCursors = BEGIN PseudoCursor: TYPE = PseudoCursors.PseudoCursor; DataRec: TYPE = RECORD [ bits: REF TerminalDefs.Cursor, newData: BOOL _ FALSE, paint: PROCESS _ NIL, timeout: CONDITION ]; waitTime: Process.Ticks _ Process.MsecToTicks[100]; Create: PUBLIC PROC [parent: ViewerClasses.Viewer, x, y: INTEGER _ 0] RETURNS [PseudoCursor] = { data: REF DataRec _ NEW[DataRec]; data.bits _ NEW[TerminalDefs.Cursor]; TRUSTED { Process.InitializeCondition[@data.timeout, waitTime] }; RETURN[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 TerminalDefs.Cursor] = { ENABLE UNWIND => {}; d: REF DataRec _ NARROW[pseudoCursor.data]; IF bits=NIL THEN d.bits^ _ ALL[0] ELSE d.bits^ _ bits^; d.newData _ TRUE; IF d.paint=NIL THEN TRUSTED { Process.Detach[d.paint _ FORK PaintProcess[pseudoCursor]] }; }; PaintProcess: ENTRY PROC [pseudoCursor: PseudoCursor] = { ENABLE UNWIND => {}; d: REF DataRec _ NARROW[pseudoCursor.data]; WHILE d.newData DO d.newData _ FALSE; ViewerOps.PaintViewer[pseudoCursor, client, FALSE, $Update]; WAIT d.timeout; ENDLOOP; d.paint _ NIL; }; PseudoCursorPaint: ViewerClasses.PaintProc = { d: REF DataRec ~ NARROW[self.data]; ImagerBackdoor.DrawBits[context: context, base: LOOPHOLE[d.bits], wordsPerLine: 1, sMin: 0, fMin: 0, sSize: 16, fSize: 16, tx: 0, ty: 16]; }; psuedoCursor: ViewerClasses.ViewerClass _ NEW[ViewerClasses.ViewerClassRec _ [ paint: PseudoCursorPaint, tipTable: NIL ]]; ViewerOps.RegisterViewerClass[$PsuedoCursor, psuedoCursor]; -- plug in to Viewers END. ΪPseudoCursorsImpl.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Michael Plass, November 2, 1982 10:48 am Last Edited by: Beach, May 24, 1983 9:12 am Doug Wyatt, April 15, 1985 5:43:13 pm PST ΚΫ– "cedar" style˜codešœ™Kšœ Οmœ1™