Files
2026-06-02 20:56:19 +02:00

45 lines
1.1 KiB
JavaScript

// meters/scale_helpers.js — shared helpers for drawing center-scale grid lines
export const METER_HEADER_FONT = 'bold 12px ui-monospace, monospace';
/**
* Draws a hairline-style grid (like the RMS meter) across a center column.
* The caller provides the existing mapY function so non-linear scales are supported.
*/
export function drawHairlineGrid(
g,
rect,
mapY,
topValue,
bottomValue,
step = 1,
color = 'rgba(255,255,255,0.08)',
lineWidth = 0.6
) {
if (!g || !rect || typeof mapY !== 'function') return;
if (!Number.isFinite(step) || step <= 0) return;
const hi = Math.max(topValue, bottomValue);
const lo = Math.min(topValue, bottomValue);
g.save();
g.beginPath();
g.rect(rect.x, rect.y, rect.w, rect.h);
g.clip();
for (let v = hi; v >= lo - 1e-6; v -= step) {
const y = Math.round(mapY(v)) + 0.5;
if (!Number.isFinite(y)) continue;
if (y < rect.y - 2 || y > rect.y + rect.h + 2) continue;
g.strokeStyle = color;
g.lineWidth = lineWidth;
g.beginPath();
g.moveTo(rect.x, y);
g.lineTo(rect.x + rect.w, y);
g.stroke();
}
g.restore();
}