Files
Sergio 93253cc227 chore: refresco desde el monorepo — 27 crates nuevos (anim, lottie, svg, mesh, image, layer, test, wire-view, widgets rag-sidebar/router/lazy-list/rive-button) y sync de los 95 existentes
Regenerado con scripts/actualizar-standalone.py --llimphi. Vendoriza además
shared/{foreign-lottie,grafo}. Quedan fuera los crates acoplados al workspace
madre (wasm-*, video-plane, voxel-app/studio, allichay, plugin-host, shuma-term).
cargo check --workspace verde (112 miembros).
2026-07-25 20:57:22 +00:00

1.3 KiB

llimphi-term-graphics

Read this in English: README.md.

Decodificador agnóstico de protocolos de gráficos de terminal.

Dos protocolos cubiertos:

  • kitty graphics protocol — secuencias APC \e_G<control>;<base64>\e\\. Soporta transmisión chunked (m=1), formatos f=100 (PNG/JPEG/… vía el crate image), f=24 (RGB crudo) y f=32 (RGBA crudo), y compresión o=z (zlib). Acciones t/T (transmitir [y mostrar]), q (query), d (delete).
  • sixel — secuencias DCS \eP<params>q<datos>\e\\. Decodificador a mano (paleta, selección de color #, RLE !, CR $, LF -, atributos raster ").

El corazón es GraphicsScanner: un autómata streaming al que se le alimentan los chunks de bytes del PTY. Deja pasar intacto todo el texto y los escapes ANSI normales (para que el emulador vt100 los procese) y sólo secuestra las secuencias gráficas completas, que devuelve decodificadas como GraphicsCommand. No tiene estado de UI ni dependencias de render: produce píxeles RGBA8, el caller los sube a una textura / peniko::Image.

Robusto a fronteras de chunk: una secuencia partida entre dos feed() queda buffereada y se completa en la llamada siguiente.


Parte de llimphi — ver llimphi.