Skip to content

1.2.0: SCOPES_GRATICULE_WIDTH, release (with #8) - #9

Merged
LeeO86 merged 2 commits into
mainfrom
feat/line-width
Nov 5, 2026
Merged

LeeO86 merged 2 commits into
mainfrom
feat/line-width

Conversation

@LeeO86

@LeeO86 LeeO86 commented Nov 5, 2026

Copy link
Copy Markdown
Owner

What

A new live setting, SCOPES_GRATICULE_WIDTH, for the thickness of the graticule lines. It takes 1 to 4 output pixels. The default is 1, which is the same picture as today.

Which lines the scopes draw

Only the graticule lines (makeRenderPlan in src/scope/render.cpp): the solid, thin and dotted scale lines in each panel of every mode. Each one is a single plot row today. The traces are not lines. They are counts per histogram cell (point density), so they stay as they are. Stage 1 has no vectorscope target, no audio lines and no overlay lines. The texts and labels have their own size, which follows the output height.

Why pixels, 1–4

Today a line is 1 px at every output size. So "times the default" and "pixels" mean the same thing, and a whole number of pixels stays sharp, with no half-covered rows. 4 px is already heavy at 1080. A wider line covers rows around its row: 2 means the row and the one below, 3 means one row above and one below. Lines are cut at the plot edge. Where wide lines overlap, each pixel is drawn once and the brighter line wins.

A size that grows with the output height (like the text scale) was the other option. I did not choose it: it would change the default picture at UHD, and a fixed pixel count is easier to understand.

Where it is set

  • Env var or config file.
  • PATCH /api/v1/scope with the field graticule_width, shown in GET /api/v1/scope.
  • A slider in the Scope tab, and a description in the Settings tab.
  • Live: the state picture is drawn again when it changes.

Tests

  • Unit tests: 89/89 pass. The golden hashes of every mode are unchanged, so the default picture is pixel-equal to before.
  • New test graticule width, for luma, the YCbCr parade and the RGB overlay:
    • Width 1 gives exactly the same graticule pixels as the default.
    • Widths 2–4 light exactly width rows at the 0 % line in the empty plot.
    • Every pixel stays inside the plot, with one entry per pixel.
  • Config tests: default 1, and 0 and 5 are refused.
  • API test: PATCH 3 applies, PATCH 5 gives 400.
  • npm run build of the web UI passes.

Docs

README and SPECIFICATION (§4.5 and the settings table), CHANGELOG under Unreleased.

🤖 Generated with Claude Code

https://claude.ai/code/session_017ybuzgBaGxuB5UiaE8dRa4

LeeO86 and others added 2 commits November 5, 2026 04:11
The graticule lines are the only lines the scopes draw (the traces are
counts per cell). A new live setting makes them 1-4 output pixels thick;
the default 1 draws the same picture as before (golden hashes unchanged).
Env var, config file, PATCH /api/v1/scope (graticule_width), a slider in
the Scope tab and the Settings description.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017ybuzgBaGxuB5UiaE8dRa4
@LeeO86 LeeO86 changed the title Add SCOPES_GRATICULE_WIDTH: thicker graticule lines 1.2.0: SCOPES_GRATICULE_WIDTH, release (with #8) Nov 5, 2026
@LeeO86
LeeO86 merged commit 46a2a5c into main Nov 5, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant