13. maja, po več kot enem letu razvoja, je izšla različica 7.0.0 cross-platform knjižnice FTXUI, namenjena razvoju aplikacij v C++ s tekstovnim uporabniškim vmesnikom in distribuirana pod MIT licenco.
Možnosti knjižnice:
- funkcionalen slog, podoben React JS;
- preprost in eleganten slog (po mnenju avtorja knjižnice);
- obravnava dogodkov s tipkovnice in mišice;
- podpora za UTF8 in Unicode;
- podpora za True Color;
- podpora za spremembo sloga kazalca;
- podpora za animacije;
- podpora za risanje;
- odsotnost zunanjih odvisnosti;
- cross-platform (Linux/MacOS, WebAssembly, Windows).
Wijzigingen
Dokumentacija
- Odpravljena težava pri generiranju dokumentacije z Doxygen.
- Dodana lastna tema za Doxygen.
- Dokumentacija razdeljena na več strani.
Kompilacija
- Dodana skripta tools$ amalgamate.py za generiranje 'amalgamiranega' izvornega kode: ftxui.cpp (534 KB), ftxui.hpp (110 KB) in ftxui_all.hpp (643 KB).
- Dodana podpora za C++20 module.
- Dodana podpora za Meson.
- Odpravljena odvisnost od pthread.
- Odpravljena podpora za Bazel.
- Druge izboljšave.
Spremembe združljivosti s prejšnjimi različicami
- Preimenovanja:
- Pixel v `Cell
- Image v Surface
- ScreenInteractive v App
- metoda PixelAt v CellAt
Za zagotovitev združljivosti so dodani vzdevki in glave, da ne bi motili delovanja obstoječega kode.
- Uporaba std::string_view namesto const std::string& tam, kjer je to mogoče. To zagotavlja boljšo združljivost s knjižnimi literali in preprečuje nepotrebno kopiranje.
Komponente
- Izboljšan in moderniziran sistem zajemanja signalov z uporabo POSIX sigaction za zanesljivo maskiranje signalov. Zavarovan pred dvojno obnovitvijo terminala pri izhodu iz programa z atomskim sledenjem začetnemu stanju. Dodana podpora za dodatne POSIX signale (SIGBUS, SIGSYS kot signale napake, in SIGQUIT, SIGHUP kot signale odloženega zaključka) ter odpravljene težave z varnostjo pri asinhronih signalih.
- Odpravljena težava s prikazom kazalca pri uporabi prilagojenega Renderer v vgnjenih posodah.
- Odpravljeno pozicioniranje kazalca v vnosnih poljih in stabilnost pomikanja.
- Odpravljena podpora za ne-ASCII znake v načinu vnosa gesla.
- Odpravljeno migotanje kazalca pri ponovnem risanju v App.
- Obravnava vnosa z uporabo POSIX cevi
- Omogoča aplikacijam FTXUI branje podatkov iz stdin (ob uporabi pipe) in hkrati sprejema vhod z računalniške tipkovnice v terminalu.
- Uporablja se privzeto.
- Lahko se izklopi z uporabo App::HandlePipedInput(false).
- Na voljo le v Linuxu in macOS.
- Odpravljene številne napake.
DOM
- Podpora za prelome vrstic (n) znotraj text() in vtext().
- Zdaj dbox prenese fokus iz zgornjih plasti na spodnje, kar ustreza vizualnemu prikazu.
- Dodana podpora za dekoratorje robov tabel. To omogoča, na primer, spreminjanje barve robov tabele.
- Odpravljena napaka s celotnim številom v ComputeShrinkHard.
- Dodana specializacija v vbox/hbox/dbox, da je možno uporabiti Element kot vhodne podatke.
- V gridboxu odpravljeno dodajanje podrejenih elementov.
- Odpravljeno prikazovanje gauge.
- Dodane parametrične različice dekoratorjev flex s parametrom _factor. Omogočajo določanje uporabniških razmerij raztezanja ali stiskanja:
flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), ter različice za osi x in y.
Optimizacije risanja
- Optimizacija premika kazalca po vrsticah v metodi Screen::ResetPosition (brez brisanja zaslona) v en parametrično določen niz ukazov CSI za premik kazalca navzgor (x1B[<n>A) namesto izpisa enega x1B[1A za vsako vrstico. To je zmanjšalo število escape znakov na okvir med prenovo (npr. ~197 -> 6 bajtov za zaslon s 50 vrsticami, ~33-kratno zmanjšanje).
- Optimizirani Screen::ToString(), Color::Print() in string_width(), kar je pospešilo:
- Osnovno upodabljanje za ~27%.
- Upodabljanje besedila za ~27%.
- Upodabljanje slogov za ~38%.
Izvor: linux.org.ru




