Zpět na projekty
TUIX v0.5Beta

Naposledy aktualizováno: 2026-05-20

Renderovací pipeline

TUIX renderuje přes nativní buffery. Každý objekt má buffer, buildry vyplňují pixelová data, kompozitor řeší viditelnost a vrstvení a renderer posílá výstup do terminálu.

Fáze pipeline

  1. Načíst a směrovat input snapshoty.
  2. Vyřešit velikost terminálu, modifikátory objektů, parent layout, viewport offsety a explicitní layout override.
  3. Podle potřeby zavolat builder resize/layout/event/content callbacky.
  4. Složit root a child buffery podle z-indexu, parent traversal, viewport clippingu a modal pravidel.
  5. Vygenerovat hitmapu používanou pro výběr myší.
  6. Vyrenderovat rozdíly viditelné v terminálu.

Řešení geometrie

Základní geometrie vychází z width_mod, height_mod, margin_top_mod a margin_left_mod. Layout parenty pak mohou přepsat obdélníky dětí zápisem layout rectů nebo grid placement dat. Scroll kontejnery a viewport widgety přidávají offsety a clipping v prostoru obsahu.

Vlastnictví pixelů

v0.5 zpřísňuje vlastnictví pixelů pomocí TuixBuffer.pixels_owned a bezpečnější obsluhy dočasných bufferů vrácených buildery. Buildry mohou držet persistentní pixel buffery nebo vracet dočasné pixely, které core zkopíruje do vlastního úložiště.

Viewport-aware kompozice

Viewport widgety vystavují callbacky pro offset, insets a velikost obsahu. Kompozitor tyto hodnoty používá pro clipping child bufferů a pro to, aby hitmap picking odpovídal viditelnému obsahu včetně odscrollovaných dětí.

Hitmap picking

Frame-local hitmapa mapuje terminálové buňky zpět na UID nejvrchnějších viditelných bufferů. Routování vstupu ji používá před builder dispatch, takže kliknutí myší sledují skutečné pořadí kreslení a viewport clipping.

Stabilita diffu

Textový a halfblock renderer porovnávají terminálem viditelný ANSI barevný výstup místo nestabilních mezihodnot barev. Tím se snižují zbytečné redraw při ekvivalentních barvách procházejících různými interními cestami.