Copyright (C) 1994, Digital Equipment Corp.
MODULE DLWindow;
IMPORT DisplayList, DPS, Fmt;
PROCEDURE Paint (t: T; box: DPS.Box; only: REFANY) =
<*FATAL DPS.BadPostScript*>
VAR him, ret: TEXT := "";
VAR dl: DisplayList.T;
BEGIN
IF only = NIL THEN
ret := " gsave " & Fmt.Real(BackgroundGray) & " setgray "
& DPS.NewPathBox (box) & " fill grestore ";
END;
dl := t.displayList;
IF dl # NIL THEN
him := dl.Repaint (box, only);
IF him # NIL THEN ret := ret & him; END;
END;
IF ret # NIL THEN t.Send ( ret ); END;
END Paint;
PROCEDURE Mouse (t: T; event: DPS.MouseEvent): BOOLEAN =
VAR dl: DisplayList.T;
BEGIN
dl := t.displayList;
IF dl = NIL THEN RETURN FALSE; END;
IF dl.Mouse (t, event) THEN RETURN TRUE; END;
(* If no-one processes mouse, kill any input focus. *)
dl.KillInputFocus();
RETURN FALSE;
END Mouse;
PROCEDURE Char (t: T; char: CHAR): BOOLEAN =
VAR dl: DisplayList.T;
BEGIN
dl := t.displayList;
IF dl = NIL THEN RETURN FALSE; END;
RETURN dl.Char (t, char);
END Char;
PROCEDURE Key (t: T; event: DPS.KeyEvent) =
VAR got: CHAR;
BEGIN
got := DPS.CharFromKey (event.key, event.modifiers);
IF got = '\000' THEN RETURN; END;
EVAL Char (t, got);
END Key;
PROCEDURE KillInputFocus (t: T) =
VAR dl: DisplayList.T;
BEGIN
dl := t.displayList;
IF dl = NIL THEN RETURN; END;
dl.KillInputFocus();
END KillInputFocus;
BEGIN
END DLWindow.