fix(plot,render,glfw): a hue-neutral crosshair, an em-dash placeholder, one layout per figure event, and a usable readout switch

This commit is contained in:
Martino Ferrari committed 2026-09-28 19:38:30 +02:00
1 parent 10d5129fbf
commit a14f333dbe
10 files changed
+175 -70

No files matched your search

+12 -7
View File
@@ -41,13 +41,18 @@ struct Style {
Color axis_text = Color::hex(0xC8D0DC);
Color cursor = Color::hex(0xFFB020);
Color measure_fill = Color::hex(0xFFB020, 0.15f);
/// The crosshair's colour: its two lines, its markers' own colour excepted, and the
/// readout panel's border (spec §15). Deliberately **not** `cursor`: the cursor accent is
/// an orange that a caller's own cursors, a region's bounds and its fill all already use,
/// while the crosshair is a passive hover instrument that has to read as *chrome* over a
/// dense trace rather than as another handle to grab. A pale cyan does that against the
/// dark default theme, and it is a colour no default element of a frame shares.
Color crosshair = Color::hex(0xB8E8FF);
/// The crosshair's colour: its two lines and the readout panel's border (spec §15). Markers are
/// deliberately *not* this colour -- they carry each trace's own, because a marker says *which*
/// trace and the line says *where*.
///
/// **Hue-neutral by design**, and that is the whole choice: a saturated colour here would be
/// confusable with a trace, and the library's own default trace colour is a saturated cyan
/// (`Trace`'s default, 0x40C0FF) that a hue-based reading cannot tell from a cyan crosshair --
/// only lightness would separate them, which no reader can rely on. A near-white can never be a
/// saturated trace of *any* hue, and it is still plainly not `cursor`'s orange, which is what
/// the spec asks for. The 1 px stroke is kept: form (a full-height thin line over a polyline) is
/// already distinct, so no dashes.
Color crosshair = Color::hex(0xE6EBF2);
// --- the scale ----------------------------------------------------------