<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ida-tui.git/logo-trans.png, branch main</title>
<subtitle>tui for headless ida</subtitle>
<id>https://git.sl0p.foo/ida-tui.git/atom/logo-trans.png?h=main</id>
<link rel='self' href='https://git.sl0p.foo/ida-tui.git/atom/logo-trans.png?h=main'/>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/ida-tui.git/'/>
<updated>2026-08-06T15:02:18Z</updated>
<entry>
<title>splash: blasty's transparent logo, and stop guessing the cell aspect</title>
<updated>2026-08-06T15:02:18Z</updated>
<author>
<name>blasty</name>
<email>blasty@local</email>
</author>
<published>2026-08-06T15:02:18Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/ida-tui.git/commit/?id=45ba9cf2f448b8c0e9548fce08ced7cea3d9cf69'/>
<id>urn:sha1:45ba9cf2f448b8c0e9548fce08ced7cea3d9cf69</id>
<content type='text'>
The artwork is now a proper transparent PNG with soft edges (24% of its pixels
carry partial alpha) instead of opaque art on black with a stray full-width
scan line along the bottom. Cropped to its content and resized 1024 -&gt; 768px,
which halves the file and costs nothing visible; logo-trans.png keeps the
master for future re-renders.

Two things the new art exposed, both wrong before it:

fit() assumed cells were 1:2. This terminal reports 9x22, i.e. 1:2.44. The old
logo was 474x516 -- close enough to the assumption that nobody noticed -- but a
square image at the hardcoded 60x33 would have been visibly stretched. The
graphics query now asks for the cell size too (CSI 16 t rides along in the same
round trip, before the DA1 that already synchronises it) and fit() uses the
answer.

The footprint was a constant. logo_cells() derives it from the artwork and the
measured cell size, so the art can be replaced without anyone remembering to
edit a number.

logo.ans was stale: the block-art fallback for terminals that can't draw an
image was still the OLD artwork, scan line included. tools/make_logo_ans.py
regenerates it from logo.png so the two cannot drift again. It understands
alpha -- a transparent cell emits no colour and lets the terminal background
through, and a cell with only one opaque half uses the matching half block so
the pixel lands on the correct side.
</content>
</entry>
</feed>
