<> <> DIRECTORY Buttons, ViewerClasses; CKViewerButtons: DEFINITIONS = BEGIN CKViewer: TYPE = REF CKViewerData; CKViewerData: TYPE = RECORD [ height: NAT, container: ViewerClasses.Viewer, state: CKViewerState, buttons: CKViewerButtons ]; CKViewerState: TYPE = RECORD [ quit, aToggle, bToggle, slow: BOOLEAN, freeze, scramble, roll: BOOLEAN, random, symmetric: BOOLEAN, testPattern, cbars, converge: BOOLEAN, bigRed, bigGreen, bigBlue: BOOLEAN, smallRed, smallGreen, smallBlue: BOOLEAN, bpp: [0..24] ]; CKViewerButtons: TYPE = RECORD [ quitButton, twentyfourButton, eightButton, fourButton, twoButton, oneButton: Buttons.Button, aChanButtton, bChanButton, slowButton: Buttons.Button, freezeButton, scrambleButton, rollButton: Buttons.Button, randomButton, symmetricButton: Buttons.Button, testButton, cBarsButton, convergeButton: Buttons.Button, bigRedButton, bigGreenButton, bigBlueButton: Buttons.Button, smallRedButton, smallGreenButton, smallBlueButton: Buttons.Button ]; Quit: Buttons.ButtonProc; Bpp24: Buttons.ButtonProc; Bpp8: Buttons.ButtonProc; Bpp4: Buttons.ButtonProc; Bpp2: Buttons.ButtonProc; Bpp1: Buttons.ButtonProc; AChan: Buttons.ButtonProc; BChan: Buttons.ButtonProc; Slow: Buttons.ButtonProc; Freeze: Buttons.ButtonProc; Scramble: Buttons.ButtonProc; Roll: Buttons.ButtonProc; CKRandom: Buttons.ButtonProc; Symmetric: Buttons.ButtonProc; TestPattern: Buttons.ButtonProc; CBars: Buttons.ButtonProc; Converge: Buttons.ButtonProc; BigRed: Buttons.ButtonProc; BigGreen: Buttons.ButtonProc; BigBlue: Buttons.ButtonProc; SmallRed: Buttons.ButtonProc; SmallGreen: Buttons.ButtonProc; SmallBlue: Buttons.ButtonProc; Go: PROC [ckViewer: CKViewer]; CreateCKViewer: PROC RETURNS [CKViewer]; END.