feat(plot): crosshair with an interpolated per-signal hover readout

This commit is contained in:
Martino Ferrari committed 2026-09-28 18:57:33 +02:00
1 parent a153b73ead
commit fd0c471430
11 files changed
+809 -22

No files matched your search

+12
View File
@@ -487,6 +487,18 @@ class Renderer {
/// them again, so the panel a test asserts and the panel this draws are the same
/// numbers.
void draw_legend(const Plot& plot, const PlotLayout& layout);
/// The crosshair: the two lines, a marker per trace, and the readout panel with a swatch and
/// a value per listed row. Every rect -- the two stroke boxes, the panel, the markers'
/// positions and the rows' boxes -- comes from `PlotLayout::crosshair`, which placed it
/// inside `axes`; this stages exactly that geometry, so the crosshair a test measures and the
/// crosshair a frame paints are one set of numbers. Clipped to `axes` with the rest of the
/// interior passes, which is what keeps a marker for an off-scale sample inside the rect.
///
/// The panel is a backplate like the legend's, so it is drawn after the lines and the
/// markers and before any of the frame's text. The rows' values were formatted by the plot
/// (in the trace's own y axis' format) and are staged here as they stand -- this layer
/// formats nothing.
void draw_crosshair(const Plot& plot, const PlotLayout& layout);
/// The built-in backend the renderer owns, and the face the frames draw with:
/// `set_text_backend()` writes `font_`, which starts here and comes back here