FTXUI 7.0.0









13. svibnja, nakon više od godine razvoja, objavljena je 7.0.0 verzija cross-platform biblioteke FTXUI, namijenjene za izradu C++ aplikacija s tekstualnim sučeljem i distribuirane pod MIT licencom.

Mogućnosti biblioteke:

  • funkcionalni stil, sličan React JS;
  • jednostavan i elegantan stil (prema autoru biblioteke);
  • obrada događaja na tipkovnici i 'mišu';
  • podrška za UTF8 i Unicode;
  • podrška za True Color;
  • podrška za promjenu stila pokazivača;
  • podrška za animacije;
  • podrška za crtanje;
  • nema vanjskih ovisnosti;
  • cross-platform (Linux/MacOS, WebAssembly, Windows).
Promjene

Dokumentacija

  • Ispravljena generacija dokumentacije s Doxygen.
  • Dodana vlastita tema za Doxygen.
  • Podjela dokumentacije na više stranica.

Komplikacija

  • Dodani skripta tools$ amalgamate.py za generiranje 'amalgamiranog' izvornog koda: ftxui.cpp (534 KB), ftxui.hpp (110 KB) i ftxui_all.hpp (643 KB).
  • Dodana podrška za module C++20.
  • Dodana podrška za Meson.
  • Uklonjena ovisnost od pthread.
  • Ispravljena podrška za Bazel.
  • Ostala poboljšanja.

Promjene kompatibilnosti s prethodnim verzijama

  • Preimenovanja:
    • Pixel u `Cell
    • Image u Surface
    • ScreenInteractive u App
    • metoda PixelAt u CellAt
      Za osiguranje kompatibilnosti predviđeni su pseudonimi i zaglavlja kako ne bi došlo do prekida rada postojećeg koda.
  • Korištenje std::string_view umjesto const std::string& gdje god je to moguće. Ovo osigurava bolju kompatibilnost s.literalima i omogućuje izbjegavanje nepotrebnog kopiranja.

Komponente

  • Unaprijeđena i modernizirana sustav hvatanja signala koristeći POSIX sigaction za pouzdano maskiranje signala. Osigurana zaštita od dvostrukog vraćanja terminala prilikom izlaska iz programa s atomskim praćenjem izvorne države. Dodana podrška za dodatne POSIX signale (SIGBUS, SIGSYS, kao signale greške, i SIGQUIT, SIGHUP, kao signale odgađanja završetka) i ispravljeni problemi s sigurnošću asinkronih signala.
  • Ispravljena greška u prikazu pokazivača pri korištenju prilagođenog Renderer-a unutar ugniježdenih kontejnera.
  • Ispravljeno pozicioniranje pokazivača u poljima za unos i stabilnost pomicanja.
  • Ispravljena podrška za ne-ASCII znakove u načinu unosa lozinke.
  • Uklonjeno treperenje pokazivača prilikom ponovnog crtanja u App.
  • Obrada unosa korištenjem POSIX cijevi
    • Omogućuje FTXUI aplikacijama da čitaju podatke iz stdin (kada se koristi pipe) i u isto vrijeme primaju unos s tipkovnice u terminalu.
    • Koristi se kao zadano.
    • Može se isključiti korištenjem App::HandlePipedInput(false).
    • Dostupno samo na Linuxu i macOS-u.
  • Ispravljeno je mnogo grešaka.

DOM

  • Podrška za prijelome redaka (n) unutar text() i vtext().
  • Sada dbox prenosi fokus s gornjih na donje slojeve, što odgovara vizualnom prikazu.
  • Dodana podrška za dekoratore rubova tablica. Ovo omogućuje, na primjer, promjenu boje rubova tablice.
  • Ispravljena greška s prekomjernim cijelim brojevima u ComputeShrinkHard.
  • Dodana specijalizacija u vbox/hbox/dbox kako bi se mogućilo korištenje Element kontejnera kao ulaznih podataka.
  • U gridboxu je ispravljeno dodavanje dječjih elemenata.
  • Ispravljeno je prikazivanje gauge.
  • Dodane su parametrizirane varijante dekoratora flex s parametrom _factor. Omogućuju definiranje korisničkih koeficijenata za istezanje ili skupljanje:
    flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), kao i varijante za os x i y.

Optimizacije renderiranja

  • Optimizacija pomicanja kursora po redovima u metodi Screen::ResetPosition (bez brisanja ekrana) u jedan parametrizirani skup naredbi CSI za pomicanje kursora prema gore (x1B[<n>A) umjesto ispisa jednog x1B[1A za svaki redak. Ovo je smanjilo broj escape znakova po okviru tijekom ponovnog iscrtavanja (primjerice, ~197 -> 6 bajtova za ekran s 50 redaka, smanjenje za ~33 puta).
  • Optimizirane su Screen::ToString(), Color::Print() i string_width(), što je ubrzalo:
    • Osnovno renderiranje za ~27%.
    • Renderiranje teksta za ~27%.
    • Renderiranje stilova za ~38%.

Izvor: linux.org.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster