* @brief Builds a scrolling-history ring for the visible window plus headroom, so a * saturated min/max source (two slots per decimation cell) still spans the full * axis instead of erasing at the left edge; the surplus samples sit off-screen. */
| 78 | * axis instead of erasing at the left edge; the surplus samples sit off-screen. |
| 79 | */ |
| 80 | static DSP::TimeRing makeHistoryRing(const double plotTimeRangeSec) |
| 81 | { |
| 82 | const double window = plotTimeRangeSec * kTimeRingHeadroom; |
| 83 | return DSP::TimeRing(timeRingCapacity(window), window); |
| 84 | } |
| 85 | |
| 86 | /** |
| 87 | * @brief Composite snapshot key: dataset uniqueIds repeat across sources, so the time-ring |
no test coverage detected