Commit 95e82f0a by PLN (Algolia)

midiviz: the wave is a watermark, not a backdrop

Behind the matrix it survived only in the margins — the cells' floor tints
are opaque on purpose, so 'behind' meant invisible. Painted over the
finished reading now, under the scanlines, brand magenta as atmosphere.
parent ec613576
......@@ -459,17 +459,23 @@ BASE_W, BASE_H = 420, 260
# ── the two backdrops that are pictures, not measurements ─────────────────
# PLN, 2026-09-24: "can we do a test (option menu toggle) with ParVagues
# imagery (transparent parvagues wave) behind the midimon to style it
# definitely ParVagues-y?"
# definitely ParVagues-y?" — then, after the first cut painted it UNDER the
# matrix: "i dont even see the parvagues wave its behind a grid of grids
# somehow?" He was right, and it was structural, not a bug: the cells' floor
# tints are OPAQUE on purpose (readability first), so anything painted behind
# them survives only in the margins. A backdrop needs translucent layers
# under it; this window has none.
#
# The wave is the brand mark itself — the Hokusai curl drawn in binary — and
# brand magenta is a RESERVED colour in the Ship's Bridge design language,
# which is exactly why it works here: at a wash this faint it is an
# atmosphere, not a second reading competing with the cells. Vendored from
# the SSOT asset (Perso/www/public/images/parvagues/logo_transparent.png,
# downscaled to 640px) because midiviz must run standalone from a checkout
# with no www tree on the box at all.
# So the wave is a WATERMARK: painted over the finished reading, under the
# scanline texture, faint enough to never compete with a digit. Brand magenta
# is a RESERVED colour in the Ship's Bridge design language, which is exactly
# why it works as atmosphere — nothing else on this canvas may use it, so the
# wash says ParVagues and nothing else. Vendored from the SSOT asset
# (Perso/www/public/images/parvagues/logo_transparent.png, downscaled to
# 640px) because midiviz must run standalone from a checkout with no www
# tree on the box at all.
WAVE_PATH = Path(__file__).resolve().parent / "ui" / "parvagues_wave.png"
WAVE_ALPHA = 0.13
WAVE_ALPHA = 0.12
# ── the HL feed ────────────────────────────────────────────────────────────
# PLN, 2026-09-24: "please do indeed sub from the events, to indeed feed
......@@ -1688,10 +1694,9 @@ def build_widget(port_label: str, reader: "Reader | None", scale: float = 1.0,
Qt.TransformationMode.SmoothTransformation)
p.setOpacity(WAVE_ALPHA)
try:
# Bottom-right, under the matrix and out of the header's way:
# the reading lives top-left, the brand lives where the eye
# rests. Painted between the background and everything else —
# the ordering IS the feature, same as the spectrum's.
# Bottom-right, over the finished reading: the digits live
# top-left, the brand lives where the eye rests. Under the
# scanlines, so the texture stays the canvas's own.
p.drawPixmap(w - scaled.width(), h - scaled.height(), scaled)
finally:
p.setOpacity(1.0)
......@@ -1841,8 +1846,6 @@ def build_widget(port_label: str, reader: "Reader | None", scale: float = 1.0,
# ordering IS the feature: PLN asked for it "behind".
if self.spectro:
self._paint_spectrum(p, w, h)
if self.wave:
self._paint_wave(p, w, h)
self._paint_chrome(p, w, h, pulse)
self._paint_header(p, now, pulse)
self._paint_controls(p)
......@@ -1850,6 +1853,11 @@ def build_widget(port_label: str, reader: "Reader | None", scale: float = 1.0,
self._paint_state(p)
self._paint_gutter(p, now, pulse)
self._paint_stream(p, now)
# The wave is a WATERMARK, not a backdrop: over the finished
# reading, under the texture. See the WAVE_PATH note — behind
# the opaque cells it survived only in the margins.
if self.wave:
self._paint_wave(p, w, h)
self._scanlines_blit(p)
self.painted += 1
finally:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment