Obsctl::TUI::MixerLayout
Where the vertical mixer puts its channel strips.
Shared by the widget and the hit test, the same way the dashboard layout is: the strips are a pure function of the area, the input count and the cursor, so a click can be resolved by recomputing them rather than by remembering where the last frame drew them.
Constants
Meter, a blank column, then the fader.
Instance methods
Strips that fit side by side. Always at least one, so a panel too narrow for a whole strip still shows the selected channel clipped rather than nothing at all.
The channel under a column, or nil for the gutter between strips.
Panels are drawn inside a one-cell border on every side.
The first channel drawn. Derived from the cursor rather than stored, so the widget and the hit test cannot disagree about where the strips are.
Rows are given up from the bottom as the panel shrinks: the dB readout goes first, then the gain readout, then the mute badge.
{channel index, strip rectangle} for every strip on screen, in draw
order. A strip that would not fit whole is left out rather than drawn
cut in half -- except on a panel too narrow for even one, where the
selected channel is clipped so something is still shown.