ui: the trigger glyph is a sine crossing its level, and every glyph is inset

The trigger's toolbar icon was a rising edge, which names only one of the four shape triggers the panel
offers. It is now a sine with a dashed level through it — the trigger's actual job, find the signal where
it crosses this — and the Signals tab's pill carries the *same* picture beside the channel list, so the
pill and the button that turns the trigger on read as the same idea. Both are one period of one-pixel
stairs, the way the plot rasterises its own traces.

Everything is inset two pixels now. The previous drafts ran their level and their bars flush to the cell
edge, which is what makes art look shaved wherever a button's padding or a crop takes a pixel: nothing in
either tab glyph, or in the trigger's, touches an edge.

Each shape was drawn and then read back as an ink map rather than trusted — the first sine came out as a
thin antialiased diagonal (a polygon through whole-pixel vertices has diagonal *edges*), which is why the
band is now per-column stairs; the level-through-the-centre arrangement was chosen over level-above-the-
centre after rendering both, since at these sizes a level nearer the crest merges with it into a blob. The
four glyphs measure 18%, 22%, 25% and 25% ink, inside the range the icons above them set.

Verified: `toolbar icons: trigger=udpscope-trigger-symbolic(ok)` and
`page icons: measure=udpscope-tab-measure-symbolic(ok) signals=udpscope-tab-signals-symbolic(ok)`;
`switcher: policy=narrow pills=2 labels=0 names=2 icon=32x32 size=308x36`;
`[side-tab-probe] … advanced=4`; `make test-ui` 14 files; zero `Gtk-CRITICAL` and no missing icon. The
icons' GResource blob is 12408 bytes — the SVG sources are embedded, comments included — still over the
C99 limit, so the clean-build warning count stays four.
This commit is contained in:
Martino Ferrari committed 2026-10-14 13:45:57 +02:00
1 parent dbe6377415
commit 75aa62cc3c
6 files changed
+70 -49

No files matched your search

+6 -1
View File
@@ -66,7 +66,12 @@ Part of [CLAUDE.md](../../CLAUDE.md). These are rules that cost a defect to lear
`udpscope-tab-signals-symbolic` is the trigger's edge above the channel list it acts on. They are not
reuses because a glyph the toolbar already carries means two things the moment a tab shows it too. Both
are **32x16** composites, one motif per half: the Measure pill is the two cursors beside the ruler, the
Signals pill the trigger beside the channel list. Wider than tall on purpose — a 16px square cell carries
Signals pill a sine with a dashed level through it beside the channel list. That picture is shared on
purpose: the trigger's *own* toolbar icon (`udpscope-trigger-symbolic`) is the same sine and the same
level, one period of one-pixel stairs, so the pill and the button that turns the trigger on are
recognisably about the same thing. The trigger glyph used to be a rising edge, and one edge names only
one of the four shape triggers the panel offers — a wave crossing a level names the trigger's job.
Wider than tall on purpose — a 16px square cell carries
one motif, and squeezing a pair into it is what turns both into a smear — and the pill has the width for
it, in a 300px column whose switcher has two pills in it. **GDK paints an icon into a square box whatever
the document's aspect** (measured: `gtk_icon_theme_lookup_icon()` at 32 reports `32x32`, and librsvg
+1 -1
View File
@@ -16,7 +16,7 @@ xvfb-run -a env UDPSCOPE_EXIT_AFTER_MS=8000 UDPSCOPE_ENABLE_ALL_MS=1000 \
Two baselines every run is read against. A clean build emits **four** warnings and no more: two
`-Wmissing-field-initializers` on `MathNode::source` and `-Woverlength-strings` on **both**
generated GResource `.c` files — the help pages' (**514660** bytes) and the icons', whose blob is
**11661** against C99's 4095-byte string-literal limit with the seven action icons and the two app icons
**12408** against C99's 4095-byte string-literal limit with the seven action icons and the two app icons
that remain (a note about a generated file, which GCC itself supports) -- re-measured when
the tab work changed the set (that icon left, the two tab glyphs arrived, and this file's
help page was rewritten), which did not move the count; re-measure by touching each `*.gresource.xml`