DIRECTORY Buttons USING [Button, ButtonProc, Create, ReLabel], ColorDisplay USING [CursorMode, SetCursorMode], Containers USING [Create, Container], Graphics USING [Box, DrawBox, GetBounds, SetColor], GraphicsColor USING [HSVToColor], Icons USING [IconFlavor, NewIconFromFile], ViewerClasses, ViewerOps USING [ChangeColumn, ComputeColumn, CreateViewer, PaintViewer, RegisterViewerClass], WindowManager USING [ScreenPos, StartColorViewers, StopColorViewers]; ColorCRTTool: PROGRAM IMPORTS Buttons, ColorDisplay, Containers, Graphics, GraphicsColor, Icons, ViewerOps, WindowManager = { Bpp: TYPE = {B8, B24}; Toggle: TYPE = {on, off}; NoBitsPerPoint:Bpp _ B8; Side:WindowManager.ScreenPos _ left; CursorColor:ColorDisplay.CursorMode _ zeros; OnOffSwitch:Toggle _ off; Hue:REAL _ 0.5; Sat:REAL _ 1.0; Val:REAL _ 1.0; ColorBar1,ColorBar2:ViewerClasses.Viewer; FixUpDisplay: PROC [] = { WindowManager.StopColorViewers[]; IF OnOffSwitch=on THEN { WindowManager.StartColorViewers[screenPos:Side, bitsPerPixel:IF NoBitsPerPoint = B8 THEN 8 ELSE 24]; ColorDisplay.SetCursorMode[CursorColor]; ViewerOps.ComputeColumn[color]; }; }; SetBpp: Buttons.ButtonProc = TRUSTED { SELECT NoBitsPerPoint FROM B8 => NoBitsPerPoint _ B24; B24 => NoBitsPerPoint _ B8; ENDCASE; Buttons.ReLabel [button:NARROW[parent, ViewerClasses.Viewer], newName:IF NoBitsPerPoint = B8 THEN "8 bpp" ELSE "24 bpp"]; FixUpDisplay[]; }; OnOff: Buttons.ButtonProc = TRUSTED { SELECT OnOffSwitch FROM on => { OnOffSwitch _ off; IF NARROW[parent, ViewerClasses.Viewer].parent.column = color THEN ViewerOps.ChangeColumn[NARROW[parent, ViewerClasses.Viewer].parent, left]; }; off => OnOffSwitch _ on; ENDCASE; Buttons.ReLabel [button:NARROW[parent, ViewerClasses.Viewer], newName:IF OnOffSwitch = on THEN "ON " ELSE "OFF"]; FixUpDisplay[]; }; SetCursorColor: Buttons.ButtonProc = TRUSTED { SELECT CursorColor FROM ones => CursorColor _ zeros; zeros => CursorColor _ ones; ENDCASE; Buttons.ReLabel [button:NARROW[parent, ViewerClasses.Viewer], newName:IF CursorColor = ones THEN "white" ELSE "black "]; ColorDisplay.SetCursorMode[CursorColor]; }; SetSide: Buttons.ButtonProc = TRUSTED { SELECT Side FROM left => Side _ right; right => Side _ left; ENDCASE; Buttons.ReLabel [button:NARROW[parent, ViewerClasses.Viewer], newName:IF Side = left THEN "left " ELSE "right"]; FixUpDisplay[]; }; SetHue: Buttons.ButtonProc = TRUSTED { IF mouseButton=red THEN Hue _ MIN[Hue + 0.01,1] ELSE Hue _ MAX[Hue - 0.01, 0]; ViewerOps.PaintViewer[clearClient:FALSE, viewer:ColorBar2, hint:client]; }; SetSat: Buttons.ButtonProc = TRUSTED { IF mouseButton=red THEN Sat _ MIN[Sat + 0.1,1] ELSE Sat _ MAX[Sat - 0.1, 0]; ViewerOps.PaintViewer[clearClient:FALSE, viewer:ColorBar1, hint:client]; ViewerOps.PaintViewer[clearClient:FALSE, viewer:ColorBar2, hint:client]; }; SetVal: Buttons.ButtonProc = TRUSTED { IF mouseButton=red THEN Val _ MIN[Val + 0.1,1] ELSE Val _ MAX[Val - 0.1, 0]; ViewerOps.PaintViewer[clearClient:FALSE, viewer:ColorBar1, hint:client]; ViewerOps.PaintViewer[clearClient:FALSE, viewer:ColorBar2, hint:client]; }; BackDropPainter:ViewerClasses.PaintProc = TRUSTED { box:Graphics.Box _ Graphics.GetBounds[context]; IF self=ColorBar1 THEN { i:REAL _ 0; width:REAL _ (box.xmax - box.xmin)/101; WHILE i<=1 DO box.xmax _ box.xmin + width; Graphics.SetColor[context, GraphicsColor.HSVToColor[i, Sat, Val]]; Graphics.DrawBox[context, box]; i _ i + 0.01; box.xmin _ box.xmin + width; ENDLOOP; } ELSE { Graphics.SetColor[context, GraphicsColor.HSVToColor[Hue, Sat, Val]]; Graphics.DrawBox[context, box]; }; }; MyIcon:Icons.IconFlavor _ Icons.NewIconFromFile["CTV.icons", 0]; ButtonBox: Containers.Container _ Containers.Create[ info:[name:"ColorCRT Tool", openHeight:180, scrollable:FALSE, icon:MyIcon]]; BackDropClassRec:ViewerClasses.ViewerClass _ NEW[ViewerClasses.ViewerClassRec]; BackDropClassRec.paint _ BackDropPainter; ViewerOps.RegisterViewerClass[$BACKDROP, BackDropClassRec]; [] _ Buttons.Create[info:[parent:ButtonBox, name:IF NoBitsPerPoint = B8 THEN "8 bpp" ELSE "24 bpp", wx:25, wy:25], proc:SetBpp, documentation:"Set number of bits per pixel"]; [] _ Buttons.Create[info:[parent:ButtonBox, name:IF CursorColor = ones THEN "white" ELSE "black ", wx:75, wy:25], proc:SetCursorColor, documentation:"Set cursor color"]; [] _ Buttons.Create[info:[parent:ButtonBox, name:IF Side = left THEN "left " ELSE "right", wx:120, wy:25], proc:SetSide, documentation:"Set color column to LEFT/RIGHT of b/w column"]; [] _ Buttons.Create[info:[parent:ButtonBox, name:IF OnOffSwitch = on THEN "ON" ELSE "OFF", wx:275, wy:25], proc:OnOff, documentation:"Turn color display ON/OFF"]; [] _ Buttons.Create[info:[parent:ButtonBox, name:"Hue", wx:25, wy:50], proc:SetHue, documentation:"Change Hue"]; [] _ Buttons.Create[info:[parent:ButtonBox, name:"Sat", wx:75, wy:50], proc:SetSat, documentation:"Change Sat"]; [] _ Buttons.Create[info:[parent:ButtonBox, name:"Val", wx:120, wy:50], proc:SetVal, documentation:"Change Val"]; ColorBar1 _ ViewerOps.CreateViewer[flavor:$BACKDROP, info:[parent:ButtonBox, wx:0, wy:70, ww:1000, wh:30]]; ColorBar2 _ ViewerOps.CreateViewer[flavor:$BACKDROP, info:[parent:ButtonBox, wx:0, wy:100, ww:1000, wh:30]]; }. bColorCRTTool.mesa Mik Lamming - March 15, 1983 10:04 am standard settings durring start up Κg– "Mesa" style˜J˜Jšœ™Jšœ%™%J˜šΟk ˜ Jšœ œ'˜6Jšœœ˜0Jšœ œ˜&Jšœ œ%˜5Jšœœ˜!Jšœ œ˜-J˜Jšœ œO˜_Jšœœ2˜EJ˜—šΟn œ˜šœa˜hJ˜——Jšœœ ˜Jšœœ ˜J˜JšΟc"™"Jšžœ ˜Jšžœ ˜$Jšž œ!˜,Jšž œ˜Jšžœœ˜Jšžœœ˜Jšžœœ˜Jšž œž œ˜)J˜J˜J˜šž œœ˜J˜!šœœ˜Jšœ=œœœ˜dJ˜(J˜J˜—J˜J˜—šžœœ˜&šœ˜J˜J˜Jšœ˜šœœ˜=Jšœœœ œ ˜<—J˜—J˜J˜—šžœœ˜%šœ ˜˜šœœ5˜BJšœœ-˜J—J˜—J˜Jšœ˜šœœ˜=Jšœœœœ˜3—J˜—J˜J˜—šžœœ˜.šœ ˜J˜J˜Jšœ˜šœœ˜=Jšœœœ œ ˜:—J˜(—J˜J˜—šžœœ˜'šœ˜J˜J˜Jšœ˜šœœ˜=Jšœœ œ œ ˜2—J˜—J˜J˜—šžœœ˜&Jš œœœœœ˜NJšœ"œ!˜HJ˜J˜—šžœœ˜&Jš œœœœœ˜LJšœ"œ!˜HJšœ"œ!˜HJ˜J˜J˜—šžœœ˜&Jš œœœœœ˜LJšœ"œ!˜HJšœ"œ!˜HJ˜J˜J˜J˜—šžœœ˜3J˜/šœœ˜Jšœœ˜ šœœ˜'šœ˜ J˜J˜BJ˜J˜ J˜Jšœ˜——J˜—šœ˜J˜DJ˜J˜—J˜J˜J˜Jšžœ;˜Ašž œG˜PJ˜Jšœ œ˜J˜—Jšžœœ˜OJšœ)˜)J˜;J˜J˜˜+Jšœœœ œ ˜9J˜J˜ J˜.J˜—˜,šœœœ œ ˜7J˜—J˜J˜"J˜—˜+Jšœœ œ œ ˜0J˜J˜ J˜>J˜—˜+Jšœœœœ˜/J˜J˜ J˜+J˜—˜+J˜ J˜J˜ J˜J˜—˜+J˜ J˜J˜ J˜J˜J˜—˜+J˜ J˜J˜ J˜J˜J˜J˜J˜J˜—˜4˜J˜——˜4˜J˜ J˜J˜J˜J˜J˜J˜———J˜J˜—…—†O