Reference interních a pokročilých API
TUIX Core vystavuje specializované subbalíčky určené pro pokročilé uživatele, vlastní UI frameworky, vysokofrekvenční renderovací smyčky a nízkoúrovňové C bridge integrace. Tato stránka dokumentuje nízkoúrovňové podsystémy napříč `command_buffer`, `compositor`, `event`, `renderer`, `sub_cycles`, `viewport` a `_lib`.
Podsystém Command Buffer (tuix.core.command_buffer)
Podsystém command bufferu umožňuje dávkové provádění opkódů a transakční commity na hranici snímků přímo přes C-Python rozhraní.
| Funkce | Signatura | Popis |
|---|
| tuix_command_buffer_execute | command_buffer.tuix_command_buffer_execute(data: bytes = b'') -> int | Vykoná serializovaný proud binárních opkódů v nativním jádře. |
| tuix_batch_clear_pending | command_buffer.tuix_batch_clear_pending() -> None | Vymaže všechny čekající dávkové operace bez jejich aplikace. |
| tuix_batch_global_commit | command_buffer.tuix_batch_global_commit() -> int | Atomicky potvrdí (commitne) všechny dávkové mutace objektů napříč všemi scénami. |
Podsystém kompozitoru (tuix.core.compositor)
| Funkce | Popis |
|---|
| compositor.tuix_compositor_compose_scene(scene) -> int | Spustí kompletní průchod hierarchií bufferů a vykreslí viditelné pixelové vrstvy do finálního výstupního bufferu. |
| compositor.tuix_compositor_mark_hit_map_dirty() -> None | Invaliduje prostorovou hit-test mapu, což vynutí její přegenerování při další události myši. |
| compositor.tuix_compositor_get_last_traversal_cache_hit() -> int | Vrátí 1, pokud poslední snímek znovu použil nacachovaný průchod scénou, 0 při cache miss. |
| compositor.tuix_compositor_resolve_geometry(buf_addr) -> int | Přepočítá proporcionální a vnořenou geometrii layout slotů na absolutní terminálové souřadnice. |
Podsystém rendereru (tuix.core.renderer)
| Funkce | Popis |
|---|
| renderer.tuix_renderer_stream() -> None | Streamuje aktuální dirty delta bajty terminálu přímo do standardního výstupu. |
| renderer.tuix_render_streaming(buf) -> None | Vygeneruje proud ANSI sekvencí z raw nativního buffer handlu. |
| renderer.tuix_renderer_create_native_buffer(py_buf) -> int | Alokuje souvislou nativní strukturu bufferu z dat Python bufferu. |
| renderer.tuix_renderer_free_native_buffer(handle: int) -> None | Uvolní paměť nativního bufferu alokovanou přes tuix_renderer_create_native_buffer. |
| renderer.tuix_renderer_apply_patch_and_render(handle: int, patch: bytes) -> bytes | Aplikuje kompaktní binární patch na nativní buffer a vyrenderuje diferenciální ANSI výstup. |
| renderer.tuix_renderer_mark_rows_dirty(start_row: int, count: int) -> None | Explicitně označí svislý rozsah řádků jako dirty pro další renderovací průchod. |
| renderer.tuix_renderer_invalidate_all() -> None | Invaliduje celý obrazovkový buffer, což vynutí plné překreslení v dalším snímku. |
| renderer.tuix_renderer_get_last_stats() -> dict | Vrací statistiky časování renderování (diff_ms, ansi_encode_ms, write_ms, bytes_emitted). |
| renderer.tuix_renderer_get_last_frame_bytes() -> int | Vrací počet ANSI bajtů odeslaných v posledním snímku. |
Sub-cycles a event bridge
| Modul a funkce | Popis |
|---|
| sub_cycles.tuix_sub_cycle_init(scene_name, obj_ptr) -> int | Inicializuje vysokofrekvenční sub-cycle smyčku pro daný widget. |
| sub_cycles.tuix_sub_cycle_free(scene_name, uid) -> None | Uvolní a odregistruje sub-cycle prostředky pro zadané UID widgetu. |
| event.tuix_event_clear_pending() -> None | Vymaže čekající zafrontované nativní události. |
| event.tuix_event_commit_python() -> int | Odešle zafrontované nativní události do registrovaných Python listenerů. |
| viewport.tuix_object_is_viewport(obj_ptr) -> int | Vrátí 1, pokud widget funguje jako vlastník viewportu (má virtuální velikost obsahu a scroll offset). |
| viewport.tuix_object_get_viewport_offset(obj_ptr) -> tuple[int, int] | Vrátí virtuální souřadnice (offset_x, offset_y) pro viewport kontejner. |
| viewport.tuix_object_get_viewport_content_size(obj_ptr) -> tuple[int, int] | Vrátí virtuální (content_width, content_height) v buňkách terminálu. |
Nízkoúrovňový binární patch protokol
Pro vzdálený streaming s ultra nízkou latencí nebo vlastní renderer bridge jsou patche baleny do 20bajtových binárních struktur:
- `index`: 4bajtový uint32 (lineární index buňky v bufferu)
- `sym`: 8bajtový uint64 (identifikátor internovaného UTF-8 symbolu)
- `fgr, fgg, fgb`: 1 bajt každý (RGB barva popředí)
- `bgr, bgg, bgb`: 1 bajt každý (RGB barva pozadí)
- `flags`: 2 bajty (bitové příznaky pro tučné, tlumené, kurzívu, podtržené, široké znaky)