feat/figment: periodic SVG glyph overlays with CLI flag #34

Merged
genewildish merged 14 commits from feat/figment into main 2026-03-19 20:42:11 +00:00
Showing only changes of commit 4cf316c280 - Show all commits

View File

@@ -19,6 +19,7 @@ from engine.layers import (
apply_glitch, apply_glitch,
process_effects, process_effects,
render_firehose, render_firehose,
render_figment_overlay,
render_message_overlay, render_message_overlay,
render_ticker_zone, render_ticker_zone,
) )
@@ -53,6 +54,16 @@ def stream(items, ntfy_poller, mic_monitor, display: Display | None = None):
msg_cache = (None, None) msg_cache = (None, None)
frame_number = 0 frame_number = 0
# Figment overlay (optional — requires cairosvg)
try:
from effects_plugins.figment import FigmentEffect
from engine.effects.registry import get_registry
_fg_plugin = get_registry().get("figment")
figment = _fg_plugin if isinstance(_fg_plugin, FigmentEffect) else None
except ImportError:
figment = None
while True: while True:
if queued >= config.HEADLINE_LIMIT and not active: if queued >= config.HEADLINE_LIMIT and not active:
break break
@@ -123,6 +134,13 @@ def stream(items, ntfy_poller, mic_monitor, display: Display | None = None):
firehose_buf = render_firehose(items, w, fh, h) firehose_buf = render_firehose(items, w, fh, h)
buf.extend(firehose_buf) buf.extend(firehose_buf)
# Figment overlay (between effects and ntfy message)
if figment and figment.config.enabled:
figment_state = figment.get_figment_state(frame_number, w, h)
if figment_state is not None:
figment_buf = render_figment_overlay(figment_state, w, h)
buf.extend(figment_buf)
if msg_overlay: if msg_overlay:
buf.extend(msg_overlay) buf.extend(msg_overlay)