feat(cursor): a cursor's stroke is its own -- width and dash
Cursors took `Style::line_width_px` and were always solid, so a host had no way to place a *readout mark* on the data (a measured level, a peak, a pulse's edge) without it reading as another instrument framing the plot. `set_cursor_stroke(id, width, dash)` gives it its own, the same shape as `set_cursor_color()`: per cursor, because one plot holds both kinds. `width <= 0` means the style's default for that cursor (`handle_width_px` while hovered or grabbed, `line_width_px` otherwise), and a hover can only make the stroke *thicker* -- the cue that the pointer has hold of something must not be the thing that hides it. `dash.off <= 0` is solid, the convention a trace's, the crosshair's and the grid's dash already share. Test: a_cursor_stroke_can_be_thinner_and_dashed -- a default cursor and a thin dashed one in the same frame. The dashed column alternates ink and gap (153/151 at the 4/4 the test asks for) while the solid one has no gaps; the ink laid down over each stroke's whole run of columns is less for the thin one. That last assertion is deliberately *not* a single-column peak: a cursor is a data position and is not snapped, so the solid stroke's ink split across two columns and read *lighter* than the thin one -- which is how this test first failed.
This commit is contained in:
1 parent
c4c0a49466
commit
fba8d985cf
6 files changed
+154
-5
No files matched your search
@@ -104,6 +104,18 @@ same width a dense minor grid reads as a second set of ticks. The dash is a frag
|
||||
discard, not extra geometry: the vertices are the line either way. Set
|
||||
`grid_minor_dash_off = 0` for the old solid subdivision.
|
||||
|
||||
## A cursor's stroke
|
||||
|
||||
`set_cursor_color()` gives a cursor its own colour and `set_cursor_stroke()` its own width and
|
||||
dash (`Cursor::width`, `Cursor::dash`). Per cursor rather than per plot, because a host uses
|
||||
cursors for two different jobs: the instruments that frame a reading — a marker at an edge, a pull
|
||||
handle — and the *readout marks* a computation places on the data (a measured level, a peak, a
|
||||
pulse's edges). Those want different weights. `width <= 0` means the style's default for that
|
||||
cursor (`handle_width_px` while it is hovered or grabbed, `line_width_px` otherwise), and a hover
|
||||
can only make the stroke *thicker*: the cue that the pointer has hold of something must not be the
|
||||
thing that hides it. `dash.off <= 0` (the default) is solid — the same convention as a trace's,
|
||||
the crosshair's and the grid's.
|
||||
|
||||
## The crosshair's dash
|
||||
|
||||
`crosshair_dash_on`/`crosshair_dash_off` are the fragment shader's discard pattern, so no
|
||||
|
||||
Reference in new issue
Block a user