FTXUI 7.0.0









13. mája, po viac ako roku vývoja, bol vydaný 7.0.0 multiplatformový knižnica. FTXUI, určené na vytváranie aplikácií s textovým rozhraním v C++ a distribuované pod licenciou MIT.

Možnosti knižnice:

  • funkcionálny štýl, podobne ako React JS;
  • jednoduchý a elegantný štýl (podľa autora knižnice);
  • spracovanie udalostí z klávesnice a „myši“;
  • podpora UTF8 a Unicode;
  • podpora True Color;
  • podpora zmeny štýlu kurzora;
  • podpora animácií;
  • podpora kreslenia;
  • žiadne externé závislosti;
  • multiplatformovosť (Linux/MacOS, WebAssembly, Windows).
Zmeny

Dokumentácia

  • Opravená generácia dokumentácie pomocou Doxygen.
  • Pridaná vlastná téma pre Doxygen.
  • Rozdelenie dokumentácie na niekoľko strán.

Kompilácia

  • Pridaný skript tools$ amalgamate.py na generovanie«amalgamovaného» zdrojového kódu: ftxui.cpp (534 kB), ftxui.hpp (110 kB) a ftxui_all.hpp (643 kB).
  • Pridaná podpora modulov C++20.
  • Pridaná podpora pre Meson.
  • Odstránená závislosť od pthread.
  • Opravená podpora pre Bazel.
  • Ďalšie vylepšenia.

Zmeny kompatibility s predchádzajúcimi verziami.

  • Premenovanie:
    • Pixel na `Cell`.
    • Image na Surface.
    • ScreenInteractive na App.
    • metóda PixelAt na CellAt.
      Na zabezpečenie kompatibility sú poskytnuté aliasy a hlavičkové súbory, aby sa neporušila funkčnosť existujúceho kódu.
  • Používanie std::string_view namiesto const std::string& tam, kde je to možné. To zaisťuje lepšiu kompatibilitu s reťazcovými literálmi a umožňuje vyhnúť sa zbytočným kópiám.

Komponenty

  • Zlepšený a modernizovaný systém zachytávania signálov pomocou POSIX sigaction na spoľahlivé maskovanie signálov. Zabezpečená ochrana pred dvojitým obnovením terminálu pri odchode z programu pomocou atomárneho sledovania pôvodného stavu. Pridaná podpora pre ďalšie signály POSIX (SIGBUS, SIGSYS ako signály zlyhania a SIGQUIT, SIGHUP ako signály oneskoreného ukončenia) a opravené problémy so zabezpečením asynchrónnych signálov.
  • Opravený problém s vykreslením kurzora pri používaní prispôsobeného Renderer vo vnorených kontajneroch.
  • Opravené umiestnenie kurzora v poliach vstupu a stabilita posúvania.
  • Opravená podpora ne-ASCII znakov v režime zadávania hesla.
  • Odstránené blikanie kurzora pri prekreslení v App.
  • Spracovanie vstupu pomocou POSIX pipes.
    • Umožňuje aplikáciám FTXUI čítať údaje z stdin (pri použití pipe) a zároveň prijímať vstup z klávesnice v termináli.
    • Používa sa predvolene.
    • Môže byť vypnuté použitím App::HandlePipedInput(false).
    • Dostupné iba v Linuxe a macOS.
  • Opravené mnohé chyby.

DOM

  • Podpora nového riadku (n) v rámci text() a vtext().
  • Teraz dbox presúva fokus z horných vrstiev na dolné, čo zodpovedá vizuálnemu zobrazeniu.
  • Pridaná podpora dekorátorov okrajov tabuliek. To umožňuje napríklad meniť farbu okrajov tabulky.
  • Opravená chyba pretečenia celého čísla v ComputeShrinkHard.
  • Pridaná špecializácia v vbox/hbox/dbox na použitie kontajnera Element ako vstupných údajov.
  • V gridboxe opravené pridávanie podprvkov.
  • Opravené zobrazenie gauge.
  • Pridané parametrové varianty dekorátorov flex s parametrom _factor. Tieto umožňujú špecifikovať vlastné faktory rozťahovania alebo zmršťovania:
    flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), ako aj varianty pre osi x a y.

Optimalizácie vykresľovania

  • Optimalizácia pohybu kurzora po riadkoch v metóde Screen::ResetPosition (bez vymazania obrazovky) na jeden parametrový súbor príkazov CSI na presun kurzora nahor (x1B[<n>A) namiesto výstupu jedného x1B[1A na každý riadok. To znížilo počet únikových znakov na snímok počas prekresľovania (napríklad ~197 -> 6 bajtov pre obrazovku s 50 riadkami, ~33-násobné zníženie).
  • Optimalizované Screen::ToString(), Color::Print() a string_width(), čo urýchlilo:
    • Základné vykresľovanie o ~27%.
    • Vykresľovanie textu o ~27%.
    • Vykresľovanie štýlov o ~38%.

Zdroj: linux.org.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster