<<>> <> <> <> <> DIRECTORY Imager USING [Context], Rope USING [ROPE]; <> ColorDisplayManager: CEDAR DEFINITIONS ~ BEGIN ROPE: TYPE ~ Rope.ROPE; Side: TYPE ~ {left, right}; Resolution: TYPE ~ { none, -- no color display standard, -- standard resolution display, approx. 640 by 480 pixels highResolution -- high resolution display, approx. 1024 by 768 pixels }; Level: TYPE ~ {off, allocated, visible, mouse, viewers}; Virtual: TYPE ~ REF; Error: ERROR [explanation: ROPE]; <> <> Start: PROC [type: ATOM, side: Side, level: Level ¬ viewers, resolution: Resolution ¬ none]; <> Stop: PROC; <> <> ColorContextCreator: TYPE ~ REF ColorContextCreatorRep; ColorContextCreatorRep: TYPE ~ RECORD [ documentation: ROPE, init: InitProc, create: CreateProc, data: REF ]; InitProc: TYPE ~ PROC [self: ColorContextCreator, vt: Virtual]; <> <> CreateProc: TYPE ~ PROC [self: ColorContextCreator, vt: Virtual] RETURNS [Imager.Context]; <> RegisterCreator: PROC [type: ATOM, creator: ColorContextCreator]; <> <> FetchCreator: PROC [type: ATOM] RETURNS [ColorContextCreator]; <> GetContext: PROC RETURNS [Imager.Context]; <> <> State: TYPE ~ REF StateRep; StateRep: TYPE ~ RECORD [type: ATOM, side: Side, level: Level, resolution: Resolution, registered: LIST OF ATOM, next: State]; <> <> NextState: PROC [old: State ¬ NIL] RETURNS [State]; <> <<>> CallWhileCurrentStateLocked: PROC [action: PROC [current: State]]; <> <> END.