<> <> <> <> DIRECTORY ControllerDefs: FROM "ControllerDefs", Real: FROM "Real", StyleDefs USING[Color]; <<--------------------------------------------------------------------------------->> <<--------------------------------------------------------------------------------->> Controllers: CEDAR PROGRAM IMPORTS Real EXPORTS ControllerDefs = BEGIN OPEN ControllerDefs; <> hController: HardcopyController; <> dController: DisplayController; ControlPair: TYPE = RECORD [next: ControlPairHandle, color: StyleDefs.Color, grey: [0 .. 255]]; lControlPair: CARDINAL = SIZE [ControlPair]; ControlPairHandle: TYPE = REF ControlPair; firstControlPair, lastControlPair: ControlPairHandle _ NIL; PixelsToMicas: REAL; SetHardcopyController: PUBLIC PROCEDURE [hc: HardcopyController] = BEGIN hController _hc END; SetDisplayController: PUBLIC PROCEDURE [dc: DisplayController] = BEGIN dController _ dc END; ReadDisplayController: PUBLIC PROCEDURE RETURNS [DisplayController] = BEGIN RETURN [dController] END; ReadHardcopyController: PUBLIC PROCEDURE RETURNS [HardcopyController] = BEGIN RETURN [hController] END; DefaultControllers: PUBLIC PROCEDURE = BEGIN OPEN StyleDefs; c: ControlPairHandle; <> <> PixelsToMicas _ 32; <> hController _ [hxcenter: 304*PixelsToMicas, hycenter: 404*PixelsToMicas, hwidth: 608*PixelsToMicas, hheight: 808*PixelsToMicas, pressxcenter: Real.RoundC[304*PixelsToMicas], pressycenter: Real.RoundC[404*PixelsToMicas], hscale: 1]; <> dController _ [dxcenter: 304, dycenter: 404, dwidth: 608, dheight: 808, dxscale: 1.0/PixelsToMicas, dyscale: 1.0/PixelsToMicas, dxorigin: 0, dyorigin: 0, dgridsize: 8]; UNTIL firstControlPair = NIL DO c _ firstControlPair.next; firstControlPair.next _ NIL; firstControlPair _ c; ENDLOOP; END; ForAllControlPairs: PUBLIC PROCEDURE [proc: PROC [h, s, v: [0 .. 255], grey: [0 .. 255]]] = BEGIN rover: ControlPairHandle _ firstControlPair; <> <> <> <> END; ControllerError: PUBLIC SIGNAL = CODE; END.