DIRECTORY Buttons, Commander USING [CommandProc, Register], Process, CKViewerButtons; CKViewerButtonsImpl: CEDAR PROGRAM IMPORTS CKViewerButtons, Buttons, Process, Commander EXPORTS CKViewerButtons = BEGIN CKViewer: TYPE = CKViewerButtons.CKViewer; CKViewerData: TYPE = CKViewerButtons.CKViewerData; Quit: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.quit _ TRUE; }; Bpp24: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.bpp _ 24; ResetBPPButtons[ckv]; Buttons.SetDisplayStyle[ckv.buttons.twentyfourButton, $WhiteOnBlack]; }; Bpp8: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.bpp _ 8; ResetBPPButtons[ckv]; Buttons.SetDisplayStyle[ckv.buttons.eightButton, $WhiteOnBlack]; }; Bpp4: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.bpp _ 4; ResetBPPButtons[ckv]; Buttons.SetDisplayStyle[ckv.buttons.fourButton, $WhiteOnBlack]; }; Bpp2: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.bpp _ 2; ResetBPPButtons[ckv]; Buttons.SetDisplayStyle[ckv.buttons.twoButton, $WhiteOnBlack]; }; Bpp1: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.bpp _ 1; ResetBPPButtons[ckv]; Buttons.SetDisplayStyle[ckv.buttons.oneButton, $WhiteOnBlack]; }; AChan: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.aToggle _ TRUE; }; BChan: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.bToggle _ TRUE; }; Slow: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.slow _ NOT ckv.state.slow; Buttons.SetDisplayStyle[ckv.buttons.slowButton, IF ckv.state.slow THEN $WhiteOnBlack ELSE $BlackOnWhite]; }; Freeze: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.freeze _ NOT ckv.state.freeze; Buttons.SetDisplayStyle[ckv.buttons.freezeButton, IF ckv.state.freeze THEN $WhiteOnBlack ELSE $BlackOnWhite]; IF NOT ckv.state.freeze THEN { --NOT freeze RESETS Scramble and Roll Buttons.SetDisplayStyle[ckv.buttons.scrambleButton, $BlackOnWhite]; Buttons.SetDisplayStyle[ckv.buttons.rollButton, $BlackOnWhite]; }; }; Scramble: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.freeze _ TRUE; ckv.state.scramble _ TRUE; Buttons.SetDisplayStyle[ckv.buttons.freezeButton, $WhiteOnBlack]; Buttons.SetDisplayStyle[ckv.buttons.scrambleButton, $WhiteOnBlack]; }; Roll: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.freeze _ TRUE; ckv.state.roll _ TRUE; Buttons.SetDisplayStyle[ckv.buttons.freezeButton, $WhiteOnBlack]; Buttons.SetDisplayStyle[ckv.buttons.rollButton, $WhiteOnBlack]; }; CKRandom: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.random _ TRUE; SetStaticButtons[ckv, ckv.buttons.randomButton]; }; Symmetric: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.symmetric _ TRUE; SetStaticButtons[ckv, ckv.buttons.symmetricButton]; }; Diag: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.diag _ TRUE; SetStaticButtons[ckv, ckv.buttons.diagButton]; }; TestPattern: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.testPattern _ TRUE; SetStaticButtons[ckv, ckv.buttons.testButton]; }; CBars: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.cbars _ TRUE; SetStaticButtons[ckv, ckv.buttons.cBarsButton]; }; Converge: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.converge _ TRUE; SetStaticButtons[ckv, ckv.buttons.convergeButton]; }; BigRed: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.bigRed _ TRUE; SetStaticButtons[ckv, ckv.buttons.bigRedButton]; }; BigGreen: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.bigGreen _ TRUE; SetStaticButtons[ckv, ckv.buttons.bigGreenButton]; }; BigBlue: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.bigBlue _ TRUE; SetStaticButtons[ckv, ckv.buttons.bigBlueButton]; }; SmallRed: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.smallRed _ TRUE; SetStaticButtons[ckv, ckv.buttons.smallRedButton]; }; SmallGreen: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.smallGreen _ TRUE; SetStaticButtons[ckv, ckv.buttons.smallGreenButton]; }; SmallBlue: PUBLIC Buttons.ButtonProc = { ckv: CKViewer _ NARROW[clientData]; ckv.state.smallBlue _ TRUE; SetStaticButtons[ckv, ckv.buttons.smallBlueButton]; }; ResetBPPButtons: PROC [ckv: CKViewer] = { Buttons.SetDisplayStyle[button: ckv.buttons.twentyfourButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.eightButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.fourButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.twoButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.oneButton, style: $BlackOnWhite]; }; SetStaticButtons: PUBLIC PROC [ckv: CKViewer, button: Buttons.Button] = { Buttons.SetDisplayStyle[button: ckv.buttons.randomButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.symmetricButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.diagButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.testButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.cBarsButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.convergeButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.bigRedButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.bigGreenButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.bigBlueButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.smallRedButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.smallGreenButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: ckv.buttons.smallBlueButton, style: $BlackOnWhite]; Buttons.SetDisplayStyle[button: button, style: $WhiteOnBlack]; }; ForkInit: Commander.CommandProc = { ckViewer: CKViewer; ckViewer _ CKViewerButtons.CreateCKViewer[]; TRUSTED { Process.Detach[FORK CKViewerButtons.Go[ckViewer]]; }; }; Commander.Register[key: "CKViewer", proc: ForkInit, doc: "ColorKinetic with viewer control panel"]; END. ΜCKViewerButtonsImpl.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Pier, August 9, 1983 10:56 am Wyatt, September 13, 1983 12:17 pm Rick Beach, November 25, 1985 1:39:41 pm PST ΚΦ˜codešœ™Kšœ Οmœ1™˜>Kšœ˜K˜K˜—š œžœ˜#Kšœžœ ˜#Kšœ˜Kšœ˜Kšœ>˜>Kšœ˜K˜—š œžœ˜$Kšœžœ ˜#Kšœžœ˜Kšœ˜K˜—š œžœ˜$Kšœžœ ˜#Kšœžœ˜Kšœ˜K˜—š œžœ˜#Kšœžœ ˜#Kšœžœ˜$Kšœ0žœžœžœ˜iKšœ˜K˜—š œžœ˜%Kšœžœ ˜#Kšœžœ˜(Kšœ2žœžœžœ˜mšžœžœžœΟc%˜DKšœC˜CKšœ?˜?K˜—Kšœ˜—K˜š œžœ˜'Kšœžœ ˜#Kšœžœ˜Kšœžœ˜KšœA˜AKšœC˜CKšœ˜—K˜š œžœ˜#Kšœžœ ˜#Kšœžœ˜Kšœžœ˜KšœA˜AKšœ?˜?Kšœ˜—K˜š œžœ˜'Kšœžœ ˜#Kšœžœ˜Kšœ0˜0Kšœ˜—š  œžœ˜(Kšœžœ ˜#Kšœžœ˜Kšœ3˜3Kšœ˜—š œžœ˜#Kšœžœ ˜#Kšœžœ˜Kšœ.˜.Kšœ˜—K˜š  œžœ˜*Kšœžœ ˜#Kšœžœ˜Kšœ.˜.Kšœ˜K˜—š œžœ˜$Kšœžœ ˜#Kšœžœ˜Kšœ/˜/Kšœ˜—K˜š œžœ˜'Kšœžœ ˜#Kšœžœ˜Kšœ2˜2Kšœ˜—K˜š œžœ˜%Kšœžœ ˜#Kšœžœ˜Kšœ0˜0Kšœ˜—K˜š œžœ˜'Kšœžœ ˜#Kšœžœ˜Kšœ2˜2Kšœ˜—K˜š œžœ˜&Kšœžœ ˜#Kšœžœ˜Kšœ1˜1Kšœ˜—K˜š œžœ˜'Kšœžœ ˜#Kšœžœ˜Kšœ2˜2Kšœ˜—K˜š  œžœ˜)Kšœžœ ˜#Kšœžœ˜Kšœ4˜4Kšœ˜—K˜š  œžœ˜(Kšœžœ ˜#Kšœžœ˜Kšœ3˜3Kšœ˜—K˜š œžœ˜*KšœT˜TKšœO˜OKšœN˜NKšœM˜MKšœM˜MK˜—K˜š œž œ,˜JKšœP˜PKšœS˜SKšœN˜NKšœN˜NKšœO˜OKšœR˜RKšœP˜PKšœR˜RKšœQ˜QKšœR˜RKšœT˜TKšœS˜SKšœ>˜>K˜—K˜š œ˜#K˜K˜,Kšžœžœ"˜?˜K˜——Kšœc˜c—K˜K˜Kšžœ˜—…— Ά