ControlsObj:
TYPE =
RECORD [
topper: Container, -- IF together THEN panel ELSE picture
panel: Container, -- control panel container
picture: Container, -- picture container
biScroller: BiScrollers.BiScroller, -- inside the picture container
actionArea: Viewer, -- the inner viewer of the BiScroller
feedbackLine: Viewer, -- part of feedback, except when feedback is disabled
yBounded: LIST OF Viewer ← NIL, -- used in GGContainerImpl for viewer resizing.
xBounded: LIST OF Viewer ← NIL,
active: BOOL ← FALSE,
activeButton: AtomButtonsTypes.TwoState,
paletteButton: AtomButtonsTypes.TwoState,
palette: BOOL ← FALSE,
bufferButton: AtomButtonsTypes.TwoState,
showColors: AtomButtonsTypes.TwoState,
screenStyle: AtomButtonsTypes.EnumTypeRef,
alignments: AtomButtonsTypes.TwoState,
gravityTypeMenu: AtomButtonsTypes.EnumTypeRef, -- initialized in GGWindowImpl
gravityExtentButton: AtomButtonsTypes.GraphicsState,
gravButton: AtomButtonsTypes.TwoState,
midpointButton: AtomButtonsTypes.TwoState,
heuristicsButton: AtomButtonsTypes.TwoState,
slopeHandle: AtomButtonsTypes.SortedButtonHandle,
slopeCount: NAT ← 0,
angleHandle: AtomButtonsTypes.SortedButtonHandle,
angleCount: NAT ← 0,
radiusHandle: AtomButtonsTypes.SortedButtonHandle,
radiusCount: NAT ← 0,
radiusCircleCache: GGCircleCache.Cache,
distanceHandle: AtomButtonsTypes.SortedButtonHandle,
distanceCount: NAT ← 0,
caret2: Viewer,
slopeView: Viewer,
angleView: Viewer,
radiusView: Viewer,
lineDistView: Viewer,
typescript: Viewer,
controlPanel: EBTypes.ActiveDoc,
controlPanelViewer: Viewer,
cursor: MultiCursors.CursorType ← crossHairsCircle
];