fix(render): a clamped ring front does not draw a segment across the panel
A ring-backed series answers a *clamped* stamp for the oldest slots of its window -- the ones the producer has already overwritten -- because the published window is pinned while both rings slide under it, and the alternative (a sentinel) collapsed the whole index mapping. The consequence for a polyline is that the stamps do not increase at the *front*: the first points carry the newest stamp and everything after them is older. Drawn as they come, that is a segment from the newest sample back to the oldest -- a line across the whole panel, which a saturated ring shows as a flicker. The gathered points are now reduced to their longest strictly increasing suffix before anything is staged, so the unreadable front is left out and the real samples are untouched. A forward pass cannot express this: the bad points are at the front and everything behind them is legitimately smaller, so "drop anything that does not advance" would delete the trace -- walking backwards keeps each point strictly older than the one kept after it and stops at the first unreadable slot. One pass over the visible points, which the staging then walks anyway. Test: a_clamped_front_does_not_draw_a_segment_across_the_panel -- a series whose first two samples carry the newest stamp at -1 while the rest walk 0..50 at +1, the shape a saturated ChannelBuffer produces. Flat at +1 except for those two, so any ink below the middle of the axes is the bad segment: with the filter there is none (0 below, 1032 above in the columns the trace covers), and without it the diagonal crosses the panel.
This commit is contained in:
1 parent
faef19ba60
commit
0ee6e10c81
3 files changed
+134
No files matched your search
@@ -29,6 +29,10 @@ run touched a GPU, so read it as an upper bound and a record of the software pat
|
||||
|
||||
## Features
|
||||
|
||||
- a trace whose series answers a *clamped* stamp for its oldest slots -- a ring whose published
|
||||
window is pinned while it slides -- is drawn from its longest increasing *suffix*, so an unreadable
|
||||
front cannot draw a segment from the newest sample back to the oldest (a line across the whole
|
||||
panel);
|
||||
- a following group's window stays on its members' data: while the members retain at least a
|
||||
window's worth, the scroll offset is bounded by `retained - span`, so a pan or a zoom-in near an
|
||||
edge cannot leave the window's own span over data the scope never had (a window *wider* than the
|
||||
|
||||
Reference in new issue
Block a user