docs: close out Θ-W6 and Phase Θ, and file two legibility-pass deferrals
This commit is contained in:
@@ -552,3 +552,64 @@ cell widths are unchanged.
|
||||
`enforceGateUnavailableWhileDrawn` (`core/instrument/engine/play_params.h`), now the
|
||||
single home of that rule, called by both `resolvePlay` and the editor's
|
||||
`applyControl`.
|
||||
|
||||
### Θ-W6-T1 — legibility-and-antialiasing
|
||||
|
||||
Made the editor legible, then audited every drawn surface for high-DPI clean rendering
|
||||
— sequenced sizing first, audit second, since the audit's disposition list needed a
|
||||
surface that had stopped moving.
|
||||
|
||||
- **Sizing.** Knobs grew 28→40 px (inner curve dial 14→20), the deck cell 48×58→60×74,
|
||||
and the label band 12→16 px, now drawn in `Font::Label` rather than `Font::Micro`.
|
||||
Group captions and toggle segments deliberately stay `Font::Micro` — bumping them
|
||||
would grow the per-group `captionWidth` reserves, and row 1 has only 14 px of
|
||||
headroom at the floor width.
|
||||
- **Editor default/minimum size 840×620 → 980×680**, because the deck cannot pack
|
||||
three rows at the old floor with the wider cells. An existing saved instance's
|
||||
window grows on open. The floor is validated by a derived test rather than
|
||||
literals.
|
||||
- **All 14 time-constant labels now read in ms**; internal representation untouched
|
||||
(`formatEnvTimeMs` is display-only). `holdFraction` knobs and `Len %` stay `%` —
|
||||
they are fractions, not times. The bank panel's clip-length readout is a duration,
|
||||
not a parameter time constant, and stayed out of scope.
|
||||
- **Double-click reset, per ring.** Outer ring resets the value, inner dial resets
|
||||
the exponent to 1.0, independently. The window class gained `CS_DBLCLKS`;
|
||||
`WM_RBUTTONDBLCLK` was added as its peer so the spline right-click delete survives,
|
||||
and both DBLCLK handlers fall through to the ordinary down handler. The chrome's
|
||||
preview-velocity knob answers reset too, resolving against the drawn circle via a
|
||||
shared `inKnobFace` rule now used by both the deck and the chrome.
|
||||
- **Antialiasing pass.** Fixed: knob track/value arcs (widened to 3 px stacked-radius
|
||||
AA arcs), knob needle (`LICE_ThickFLine`), inner dial arc and needle, staged
|
||||
envelope slopes, spline contour, velocity-popup trace, waveform outline, preview
|
||||
triangle. Already clean: node handles, curve knots, knob discs, buttons, piano
|
||||
keys, loop markers, borders, gradients, text. The full disposition table is a
|
||||
standing artifact in `docs/product/visual-design-language.md` §8.
|
||||
- Three LICE facts the audit established: `LICE_Line` takes integer endpoints so
|
||||
`aa=true` still quantizes; `LICE_FillTriangle` has no `aa` parameter at all; LICE
|
||||
has no thick-arc call, so a wider ring is stacked 1 px arcs.
|
||||
- **Measured cost:** the new AA waveform stroke adds ~0.41 ms per full-grid panel
|
||||
repaint (0.070 → 0.48 ms over a 24-card × 2-band × 136-column grid), ~2.5% of a
|
||||
60 Hz frame. Recorded in the §8 table and annotated as a one-off scratchpad
|
||||
measurement, not a standing regression guard.
|
||||
- **The piano-key open question is answered: not aliasing.** Every key is an
|
||||
axis-aligned integer-width `LICE_FillRect`, so there was no sloped edge for
|
||||
aliasing to act on; the defect was integer-division residue in the tiling, and
|
||||
W2-T3's fix (remainder moved into symmetric end margins) is arithmetic. Above
|
||||
client-pixel scaling it is unverified — nothing implements
|
||||
`IPlugViewContentScaleSupport`.
|
||||
|
||||
**Two structural changes forced by review.** The waveform column's vertical
|
||||
arithmetic moved into a pure, unit-tested `waveformColumnSpan` in
|
||||
`core/ui/component_geometry` — the first pass had silently broken symmetry about
|
||||
the midline in the shared `draw_kit` primitive that also feeds the docked bank
|
||||
panel and browse thumbnails. And `PlaySeconds` plus its `AdsrSeconds`/
|
||||
`AhdSeconds`/`PitchEnvSeconds`/`FilterSeconds` companions hoisted out of
|
||||
`sample_map.h` into a header-only `play_seconds` INTERFACE target, so the new
|
||||
`core/instrument/ui/deck_values` module stops transitively linking the bank model
|
||||
and WAV codec. `deck_values` itself is an extraction of `controlValue`/
|
||||
`applyControl`/`resetDeckParam`/the ms formatter out of the editor shell, making
|
||||
reset semantics unit-testable; `editor_controls.cpp` dropped 469→293 lines.
|
||||
|
||||
All visual outcomes remain **pending Daniel's by-eye sign-off on `dev`** — sizes,
|
||||
arc weight, and whether the waveform stroke improves or thickens the docked panel.
|
||||
Not recorded as accepted.
|
||||
|
||||
Reference in New Issue
Block a user