// 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(); }