feat(photos): burn axis-oriented dimension overlay PNG (#63)

Add pure station/axis math and canvas burn-in for a second calibration
inventory PNG (results.overlayPng). Width stations start 6 in from the
EXIF-oriented photo bottom along the approved length axis (6, 18, … ≤
L−6); length graphic sits on axis-right outside the slab. Clean
inventoryPng and batchApply[cal]=null stay unchanged.
This commit is contained in:
2026-09-15 21:31:22 +00:00
parent c674931f5c
commit a22525023a
4 changed files with 393 additions and 5 deletions
+3 -1
View File
@@ -16,10 +16,12 @@ test('overlayWidthStations: every 12 in from 6 while ≤ L−6 (#63)', () => {
assert.deepEqual(overlayWidthStations(40), [6, 18, 30]);
assert.deepEqual(overlayWidthStations(12), [6]);
assert.deepEqual(overlayWidthStations(18), [6]);
assert.deepEqual(overlayWidthStations(19), [6, 18]);
assert.deepEqual(overlayWidthStations(19), [6]); // L−6=13 → 18 excluded
assert.deepEqual(overlayWidthStations(11), []);
assert.deepEqual(overlayWidthStations(10), []);
assert.deepEqual(overlayWidthStations(6), []);
assert.deepEqual(overlayWidthStations(24), [6, 18]);
assert.deepEqual(overlayWidthStations(30), [6, 18]);
});
test('overlayWidthStations: never tip-inclusive 0 or L (#63)', () => {