Më 13 maj, pas më shumë se një viti zhvillimi, u publikua versioni 7.0.0 i bibliotekës shumë-platformë. FTXUI, e cila është projektuar për të krijuar aplikacione me ndërfaqe tekstuale në C++ dhe shpërndahet nën licencën MIT.
Veçoritë e bibliotekës:
- stil funksional, të ngjashëm me React JS;
- stil të thjeshtë dhe elegant (sipas autorit të bibliotekës);
- përpunimi i ngjarjeve të tastierës dhe të "mausit";
- mbështetje për UTF8 dhe Unicode;
- mbështetje për True Color;
- mbështetje për ndryshimin e stilit të kursorit;
- mbështetje për animacione;
- mbështetje për vizatimin;
- mungesë varësish nga palë të treta;
- shumëplatformësi (Linux/MacOS, WebAssembly, Windows).
Ndryshimet
Dokumentacioni
- Korrigjimi i gjenerimit të dokumentacionit me Doxygen.
- Shtuar një temë të vetme për Doxygen.
- Ndara dokumentacionin në disa faqe.
Kompilimi
- Shtuar skenari tools$ amalgamate.py për të gjeneruar kodin e 'amalgamuar': ftxui.cpp (534 KB), ftxui.hpp (110 KB) dhe ftxui_all.hpp (643 KB).
- Shtuar mbështetje për modulët C++20.
- Shtuar mbështetje për Meson.
- Fshirë varësinë nga pthread.
- Korrigjuar mbështetje për Bazel.
- Përmirësime të tjera.
Ndryshimet e pajtueshmërisë me versionet e mëparshme
- Rinominimet:
- Pixel në `Cell
- Image në Surface
- ScreenInteractive në App
- metoda PixelAt në CellAt
Për të siguruar pajtueshmëri, janë parashikuar pseudonime dhe tituj, për të mos prishur funksionimin e kodit ekzistues.
- Përdorimi i std::string_view në vend të const std::string& kur është e mundur. Kjo ofron më shumë pajtueshmëri me literalet e vargjeve dhe lejon shmangien e kopjimeve të panevojshme.
Komponentët
- Përmirësuar dhe modernizuar sistemi i kapjes së sinjaleve duke përdorur POSIX sigaction për maskimin e sinjaleve në mënyrë të besueshme. Siguruar mbrojtje nga rivendosja e dyfishtë të terminalit gjatë daljes nga programi duke përdorur ndjekjen atomike të gjendjes fillestare. Shtuar mbështetje për sinjale të tjera POSIX (SIGBUS, SIGSYS si sinjale dështimi, dhe SIGQUIT, SIGHUP si sinjale për përfundimin e vonuar) dhe zhdukur problemet e sigurisë së sinjaleve asinkrone.
- Korrigjuar problemin e shfaqjes së kursorit duke përdorur Renderer të personalizuar në konteinerët e thelluar.
- Korrigjuar pozicionimin e kursorit në fushat e hyrjes dhe stabilitetin e rrokullisjes.
- Korrigjuar mbështetje për karakteret jo ASCII në modin e input-it të fjalëkalimit.
- Eliminimi i ndriçimit të kursorit gjatë rikonstruksionit në App.
- Përpunimi i hyrjes duke përdorur POSIX pipes
- Lejon aplikacionet FTXUI të lexojnë të dhëna nga stdin (duke përdorur pipe) dhe gjithashtu të marrin input nga tastiera në terminal.
- Përdoret nga qeveria.
- Mund të çaktivizohet duke përdorur App::HandlePipedInput(false).
- E disponueshme vetëm në Linux dhe macOS.
- Korrigjuar shumë gabime.
DOM
- Mbështetje për kthimin e rreshtave (n) brenda text() dhe vtext().
- Tani dbox kalon fokusin nga layers e sipërme në ato të poshtme, që përputhet me shfaqjen vizuale.
- Shtuar mbështetje për dekoratorët e kufijve të tabelave. Kjo lejon, për shembull, ndryshimin e ngjyrës së kufijve të tabelës.
- Korrigjuar një gabim të mbushjes së numrit në ComputeShrinkHard.
- Shtuar specializim në vbox/hbox/dbox për të mundësuar përdorimin e elementit të konteinerit si hyrje.
- Në gridbox korrigjuar shtimin e elementeve fëmijë.
- Korrigjuar shfaqjen e gauge.
- Shtuar opsione të parametrizuara të dekoratorëve flex me parametrin _factor. Këto lejojnë përcaktimin e koeficientëve të zgjerimit ose shtrëngimit të përdoruesit:
flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), si dhe variante për aksin x dhe y.
Optimizimet e vizatimit
- Optimizimi i lëvizjes së kursorit nëpër rreshta në metodën Screen::ResetPosition (pa pastrimin e ekranit) në një grup të parametrizuar të komandave CSI për lëvizjen e kursorit lart (x1B[<n>A) në vend të nxjerrjes së një x1B[1A për secilën rresht. Kjo reduktoi numrin e simboleve të maskimit për kornizë gjatë rikonstruksionit (për shembull, ~197 -> 6 bytes për një ekran me 50 rreshta, një reduktim 33-fish).
- Optimizuar Screen::ToString(), Color::Print() dhe string_width(), duke përshpejtuar:
- Renderimi bazë me ~27%.
- Renderimi i tekstit me ~27%.
- Renderimi i stileve me ~38%.
Burimi: linux.org.ru




