Zpět na projekty
TUIX v0.3Beta

Naposledy aktualizováno: 2026-05-20

Reference interního API

Tato sekce dokumentuje interní moduly, které propojují Python API a zkompilované C jádro. Nejsou součástí veřejného API — jde o implementační detaily, které se mohou měnit mezi verzemi.

Pouze pro interní použitíModuly zdokumentované zde (tuix.core._lib, tuix.core._structs, tuix.core._tuix_cy) jsou interní. Nespoléhejte na ně v aplikačním kódu. Místo toho používejte moduly veřejného API (engine, scenes, objects, buffers, input, builders, registry).
Čištění API ve v0.3Veřejné API pro raw buffer pointer gettery bylo odstraněno z doporučeného veřejného povrchu ve prospěch lock-safe snapshot API (snapshoty bufferů a objektů podle UID).

tuix.core._lib — C most

Modul _lib načte zkompilované Cython rozšíření (_tuix_cy) nebo se vrátí k načítání sdílené knihovny přes ctypes.CDLL. Poskytuje obalové funkce, které volají nativní C kód.

Proměnné modulu

ProměnnáTypPopis
_modmodule | NoneNačtený Cython modul (_tuix_cy), nebo None pokud není dostupný
libCDLL | NoneHandle načtené sdílené C knihovny, nebo None

Funkce

FunkcePopis
get_func(name, restype, argtypes)Vyhledá nativní funkci podle jména v Cython modulu nebo CDLL. Vrací volatelnou funkci.
tuix_render_streaming(buf)Vyrenderuje TuixFinalBuffer do terminálu pomocí streaming rendereru.
tuix_create_native_buffer(py_buf)Vytvoří nativní buffer z Python buffer objektu. Vrací celočíselný handle.
tuix_free_native_buffer(handle)Uvolní nativní buffer podle handle.
tuix_apply_patch_and_render(handle, patch)Aplikuje binární patch na nativní buffer a vyrenderuje výsledek. Vrací ANSI byty.
make_patch_bytes(updates)Převede seznam dvojic (index, sym, fg, bg) na 20bajtové binární patch záznamy.

Formát binárního patche

Každý patch záznam má 20 bytů:

PosunVelikostPole
04 bytesIndex pixelu (little-endian uint32)
48 bytesUTF-8 symbol (vyplněný nulami)
123 bytesRGB popředí
153 bytesRGB pozadí
181 bytePříznaky (tučné, kurzíva, podtržení, ztlumení)
191 byteRezervováno

tuix.core._structs — mapování C struktur

Modul _structs definuje třídy Python ctypes.Structure, které zrcadlí C struktury použité v enginu.

TuixRGBTuple

PoleTypPopis
ruint8Červený kanál (0–255)
guint8Zelený kanál (0–255)
buint8Modrý kanál (0–255)

TuixPixelStyles

PoleTypPopis
fgTuixRGBTupleBarva popředí
bgTuixRGBTupleBarva pozadí
custom_bguint8Příznak vlastní barvy pozadí
custom_fguint8Příznak vlastní barvy popředí
bolduint8Atribut tučného textu
underlineduint8Atribut podtržení
italicuint8Atribut kurzívy
dimuint8Atribut ztlumení

TuixPixel

PoleTypPopis
symchar[8]UTF-8 znak (až 8 bytů)
stylesTuixPixelStylesStyly pixelu
q_fgTuixRGBTupleKvantizované popředí (cache)
q_bgTuixRGBTupleKvantizované pozadí (cache)
q_cacheduint8Zda je kvantizovaná cache platná

TuixObject

PoleTypPopis
uidintUnikátní identifikátor objektu (automaticky)
buildervoid*Ukazatel na TuixBuilder, který vytvořil tento widget
statevoid*Ukazatel na opaque stav widgetu
width_modfloatŠířka jako zlomek šířky terminálu
height_modfloatVýška jako zlomek výšky terminálu
margin_top_modfloatHorní okraj jako zlomek výšky terminálu
margin_left_modfloatLevý okraj jako zlomek šířky terminálu

TuixBuffer

PoleTypPopis
objTuixObject*Ukazatel na rodičovský objekt
pixelsTuixPixel*Ukazatel na pole pixelového bufferu
widthintAktuální vypočtená šířka ve sloupcích
heightintAktuální vypočtená výška v řádcích
required_redrawintPříznak dirty — 1 pokud buffer potřebuje rebuild
margin_leftintVypočtený levý okraj ve sloupcích
margin_topintVypočtený horní okraj v řádcích

TuixFinalBuffer

PoleTypPopis
pixelsTuixPixel*Zkomponované pole pixelů (terminal_width × terminal_height)
widthintŠířka ve sloupcích
heightintVýška v řádcích
full_redrawintVynutí znovu-renderování všech pixelů

TuixInputSnapshot

PoleTypPopis
term_xintŠířka terminálu v okamžiku snímku
term_yintVýška terminálu v okamžiku snímku
mousevoid*Ukazatel na data události TuixMouseKey
keyboardvoid*Ukazatel na data události TuixKeyboardKey

TuixRegistry

PoleTypPopis
scenesvoid*Ukazatel na kontejner TuixScenes
subcyclesvoid*Ukazatel na kontejner TuixSubcycles
buildersvoid*Ukazatel na kontejner TuixBuilders
current_scene_namechar*Ukazatel na řetězec názvu aktivní scény
next_uidintDalší UID k přiřazení (auto-increment)
terminal_widthintAktuální šířka terminálu
terminal_heightintAktuální výška terminálu
terminal_width_oldintŠířka terminálu z předchozího snímku
terminal_height_oldintVýška terminálu z předchozího snímku

tuix.core._tuix_cy — Cython rozšíření

Modul _tuix_cy je Cython rozšíření, které obaluje všechna C volání. Je kompilovaný z _tuix_cy.pyx a linkovaný proti C zdrojovým souborům. Moduly Python API volají funkce _tuix_cy, pokud jsou dostupné, jinak použijí ctypes, pokud Cython modul není načtený.

Cython vrstva je tenký wrapper — převádí Python typy na C typy, volá nativní funkci a převádí výsledek zpět. Nepřidává žádnou dodatečnou logiku mimo marshaling typů.

Architektura C enginu

Zkompilované C jádro je organizováno do těchto subsystémů:

SubsystémSouboryÚčel
Hlavní smyčkamain.c, main.hŘízení pipeline pro každý snímek
Inicializace/Ukončeníinit.c, init.hNastavení a uvolnění registry
Renderovánírendering.c, rendering.hDelta renderer s kvantizací barev
Kompozitorcompositor/Kompozice bufferu scén s ořezem
Geometriecompositor/geometry_resolver.cVýpočet proporcionálního rozložení
Správce bufferůbuffer_manager.cAlokace, vyhledávání a uvolňování bufferů
Správce objektůobject_manager.cTvorba widgetů s dispatch builderu
Správce scénbuffers.cCRUD scén a správa pole bufferů
Builderycontent_builder/Registrace typu widgetu a routování
Implementace widgetůcontent_builder/builders/C kód pro Canvas, Choice, Input, Progressbar
Vstupinput/Zachyt klávesnice a myši specifický pro platformu
Subcyklysubcycles/Interní řídicí objekty pro vykonání handlerů v každém snímku
Dávkový executorbatch_executor.cParser binárního command bufferu (interní optimalizace)

Volitelné C moduly

Zdrojová distribuce obsahuje moduly, které nejsou kompilované ve výchozím buildu. Pokročilí uživatelé je mohou zahrnout úpravou setup.py:

ModulSouborPopis
Halfblock rendererrendering_halfblocks.c2x vertikální rozlišení pomocí Unicode halfblock znaků (▀). Spojí dva pixelové řádky do jednoho řádku terminálu.
Správce cachecache_manager.cExperimentální cache modul; produkční strategie v0.3 je data-first statistika scén a kompaktace studených scén.