fix: the t0 caption is chrome anchored to the axis, not an annotation in the data
The caption that names the relative x labels' anchor was an `Annotation`, whose anchor is a data coordinate -- so it crawled across the plot under a pan and drifted under a zoom, which is how it was reported. It is now `Plot::set_x_note()`: the bottom row's caption, drawn by the renderer in the axes' bottom-left corner in pixels, on the legend's own backplate. The text stays the host's, because only the host knows that label + caption has to be the exact absolute time (`%.6g`, where `format_time()` would round to three figures). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
e2985aa159
commit
39f30d913f
6 files changed
+47
-45
No files matched your search
@@ -95,9 +95,15 @@ feedback loop), the magnitude is the larger of the two endpoints, and the compar
|
||||
1.05 band leaving the relative form plus a ULP of slack entering it — a step *equal* to the
|
||||
resolution is readable (`1.73s`, `1.74s`, `1.75s`: one in the last digit is exactly enough), so a
|
||||
decision taken on the last bits of two differently computed doubles picked a different form from
|
||||
one frame to the next. The caption is an annotation
|
||||
inside the axes rather than the axis title on purpose: its text changes with the window, and a
|
||||
title of a changing width would relayout the plot every frame. Everything a user copies out —
|
||||
one frame to the next. The caption is **chrome** — `Plot::set_x_note()`, added to the plotter for
|
||||
it, drawn on the legend's own backplate in the bottom-left corner of the axes — rather than the
|
||||
axis title or an annotation. Not the title, because its text changes with the window and a title
|
||||
of a changing width would relayout the plot every frame; not an annotation, because an
|
||||
annotation's anchor is a *data* coordinate, so the caption crawled across the plot under a pan and
|
||||
drifted under a zoom, which is what it was reported as. The library test is
|
||||
`the_x_note_is_chrome_that_a_pan_or_a_zoom_does_not_move`: the footprint is measured as the pixels
|
||||
a frame with the caption differs from the same frame without one, and a pan to another decade plus
|
||||
a 64× zoom must produce the same box to the pixel. Everything a user copies out —
|
||||
the cursors' `T0`/`T1`/`dT`, a measurement, an export — stays in absolute stream seconds.
|
||||
|
||||
The anchor is taken by the *axis* on every layout (`Axis::origin_follows_range`), not written
|
||||
|
||||
Reference in new issue
Block a user