Më 13 maj, pas më shumë se një viti zhvillim, u lëshua versioni 7.0.0 i bibliotekës shumëplatformatike FTXUI, e destinuar për krijimin e aplikacioneve C++ me ndërfaqe tekstuale dhe e shpërndarë nën licencën MIT.
Mundësitë e bibliotekës:
- stili funksional, ngjashëm me React JS;
- stili i thjeshtë dhe elegant (sipasa autorit të bibliotekës);
- trajtim i ngjarjeve të tastierës dhe "një miu";
- 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 e treta;
- shumëplatformatësi (Linux/MacOS, WebAssembly, Windows).
Ndryshimet
Dokumentacioni
- U drejtua gjenerimi i dokumentacionit me Doxygen.
- U shtua një temë e vet me Doxygen.
- Ndara dokumentacionin në disa faqe.
Kompilimi
- U shtua skripta tools$ amalgamate.py për gjenerimin e kodit burimor "amalgam": ftxui.cpp (534 KB), ftxui.hpp (110 KB) dhe ftxui_all.hpp (643 KB).
- U shtua mbështetje për module C++20.
- U shtua mbështetje për Meson.
- U hoq varësia nga pthread.
- U përmirësua mbështetja për Bazel.
- Përmirësime të tjera.
Ndryshime përkatësie me versionet e mëparshme
- Rinovimi i emrave:
- Pixel në `Cell
- Image në Surface
- ScreenInteractive në App
- metoda PixelAt në CellAt
Për të siguruar përputhshmëri, janë parashikuar emra dhe tituj për të mos penguar funksionimin e kodit ekzistues.
- Përdorimi i std::string_view në vend të const std::string& aty ku është e mundur. Kjo ofron përputhshmëri më të mirë me literalet e stringjeve dhe lejon shmangien e kopjimeve të panevojshme.
Komponentët
- Sistemi i kapjes së sinjaleve është përmirësuar dhe modernizuar duke përdorur POSIX sigaction për maskimin e sigurt të sinjaleve. U siguruar mbrojtja nga rikthimi i dyfishtë të terminalit kur del nga programi me gjurmim atomik të gjendjes origjinale. U shtua mbështetje për sinjale të tjera POSIX (SIGBUS, SIGSYS si sinjale dështimi, dhe SIGQUIT, SIGHUP si sinjale të mbylljes së vonuar) dhe u rregulluan probleme të sigurisë nga sinjalet asinkrone.
- U rregullua problemi me shfaqjen e kursorit kur përdoren Renderer të personalizuar në konteinerë të përshtatur.
- U rregullua pozicionimi i kursorit në fushat e hyrjes dhe stabiliteti i skrollimit.
- U rregullua mbështetja për karaktere jo ASCII në modin e hyrjes së fjalëkalimit.
- U eleminua dridhja e kursorit gjatë riparimit në App.
- Trajtimi i hyrjes duke përdorur POSIX pipes
- Lejon aplikacionet FTXUI të lexojnë të dhënat nga stdin (duke përdorur pipe) dhe për këtë arsye të vazhdojnë të pranojnë input nga tastiera në terminal.
- Përdoret si parazgjedhje.
- Mund të çaktivizohet duke përdorur App::HandlePipedInput(false).
- E disponueshme vetëm në Linux dhe macOS.
- Janë rregulluar shumë gabime.
DOM
- Mbështetje për ndërrimin e linjave (n) brenda text() dhe vtext().
- Tani dbox transferon fokusin nga nivelet e sipërme te ato të poshtme, në përputhje me shfaqjen vizuale.
- Shtuar mbështetje për dekoratorët e kufijve të tabelave. Kjo lejon, për shembull, të ndryshoni ngjyrën e kufijve të tabelës.
- Rregulluar gabimi i mbushjes së numrave në ComputeShrinkHard.
- Shtuar specializimi në vbox/hbox/dbox për mundësinë e përdorimit të kontejnerit Element si input.
- Në gridbox është rregulluar shtimi i elementeve fëmijë.
- Rregulluar shfaqja e gauge.
- Shtuar variante parametrike të dekoratorëve flex me parametrin _factor. Këto lejojnë përcaktimin e koeficientëve personalizuar për shtrirje ose kontraktim:
flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), si dhe variante për boshtet x dhe y.
Optimizime të renderimit
- Optimizimi i lëvizjes së kursorit mbi rreshta në metodën Screen::ResetPosition (pa pastrimin e ekranit) në një set komande parametrike CSI për lëvizjen e kursorit lart (x1B[<n>A) në vend të nxjerrjes një x1B[1A për çdo rresht. Kjo redukton numrin e simboleve të escaping për kornizë gjatë ripërllogaritjes (p.sh., ~197 -> 6 byte për një ekran me 50 rreshta, reduktim ~33-fish).
- Optimizuar Screen::ToString(), Color::Print() dhe string_width(), që përshpejton:
- Renderimi bazë në ~27%.
- Renderimi i tekstit në ~27%.
- Renderimi i stileve në ~38%.
Burimi: linux.org.ru




