13. mája, po viac ako roku vývoja, bola vydaná verzia 7.0.0 multiplatformovej knižnice. FTXUI, určený na vytváranie C++ aplikácií s textovým rozhraním a distribuovaný pod licenciou MIT.
Funkcie knižnice:
- funkčný štýl, podobný React JS;
- jednoduchý a elegantný štýl (podľa autora knižnice);
- spracovanie udalostí klávesnice a myši;
- podpora UTF8 a Unicode;
- podpora True Color;
- podpora zmeny štýlu kurzora;
- podpora animácií;
- podpora kreslenia;
- žiadne závislosti od tretích strán;
- multiplatformový (Linux/MacOS, WebAssembly, Windows).
zmeny
Záznamy
- Opravené generovanie dokumentácie pomocou Doxygenu.
- Pridaná vlastná téma pre Doxygen.
- Rozdelenie dokumentácie na viacero strán.
zostavenie
- Pridaný skript tools$ amalgamate.py na generovanie „zlúčeného“ zdrojového kódu: ftxui.cpp (534 KB), ftxui.hpp (110 KB) a ftxui_all.hpp (643 KB).
- Pridaná podpora pre moduly C++20.
- Pridaná podpora pre Meson.
- Odstránená závislosť od pthread.
- Opravená podpora Bazela.
- Ďalšie vylepšenia.
Zmeny v kompatibilite s predchádzajúcimi verziami
- Premenovanie:
- Pixel v bunke
- Obrázok na povrchu
- ScreenInteractive v aplikácii
- Metóda PixelAt v CellAt
Pre zaistenie kompatibility sú poskytnuté aliasy a hlavičky, aby sa predišlo narušeniu existujúceho kódu.
- Všade, kde je to možné, použite std::string_view namiesto const std::string&. To zabezpečí lepšiu kompatibilitu s reťazcovými literálmi a zabráni zbytočnému kopírovaniu.
Komponenty
- Systém zachytávania signálov bol vylepšený a modernizovaný pomocou POSIX sigaction pre spoľahlivé maskovanie signálov. Ochrana pred dvojitým obnovením terminálu po ukončení programu je zabezpečená pomocou atomického sledovania počiatočného stavu. Bola pridaná podpora pre ďalšie signály POSIX (SIGBUS a SIGSYS ako signály zlyhania a SIGQUIT a SIGHUP ako signály oneskoreného ukončenia) a boli opravené bezpečnostné problémy s asynchrónnymi signálmi.
- Opravený problém so zobrazením kurzora pri použití vlastného vykresľovača vo vnorených kontajneroch.
- Opravené umiestnenie kurzora vo vstupných poliach a stabilita rolovania.
- Opravená podpora pre znaky iné ako ASCII v režime zadávania hesla.
- Opravené blikanie kurzora pri prekresľovaní v aplikácii.
- Spracovanie vstupu pomocou POSIX pipes
- Umožňuje aplikáciám FTXUI čítať zo stdin (pri použití prepojenia) a zároveň akceptovať vstup z klávesnice v termináli.
- Používa sa štandardne.
- Dá sa zakázať pomocou App::HandlePipedInput(false).
- Dostupné iba v Linux и macOS.
- Mnoho chýb bolo opravených.
DOM
- Podpora pre nové riadky (n) vo vnútri funkcií text() a vtext().
- Teraz dbox presúva fokus z vrchných vrstiev na spodné, čo zodpovedá vizuálnemu zobrazeniu.
- Pridaná podpora pre dekorátory orámovania tabuliek. To vám napríklad umožňuje zmeniť farbu orámovania tabuliek.
- Opravená chyba pretečenia celého čísla v ComputeShrinkHard.
- Pridaná špecializácia pre vbox/hbox/dbox, ktorá umožňuje použitie kontajnera Element ako vstupu.
- Pridávanie podradených prvkov do gridboxu bolo opravené.
- Pevný displej s meradlom.
- Boli pridané parametrizované varianty flex dekorátorov s parametrom _factor. Tieto umožňujú zadať vlastné faktory roztiahnutia alebo zmrštenia:
flex_factor(rast, zmenšovanie), flex_grow_factor(rast), flex_shrink_factor(zmršťovanie), ako aj varianty pre osi x a y.
Optimalizácia vykresľovania
- Optimalizácia pohybu kurzora po riadkoch v metóde Screen::ResetPosition (bez vymazania obrazovky) do jednej parametrizovanej sady CSI príkazov pre pohyb kurzora nahor (x1B[ A) namiesto výstupu jedného x1B[1A na riadok. Toto znížilo počet únikových znakov na rámec počas prekresľovania (napr. ~197 -> 6 bajtov pre 50-riadkovú obrazovku, ~33-násobné zníženie).
- Optimalizované funkcie Screen::ToString(), Color::Print() a string_width(), ktoré zrýchlili:
- Základné vykresľovanie na ~27 %.
- Vykreslenie textu o ~27 %.
- Vykreslenie štýlu o ~38 %.
Zdroj: linux.org.ru




