Den 13. maj, efter mere end et års udvikling, blev version 7.0.0 af biblioteket på tværs af platforme udgivet. FTXUI, designet til at skabe C++-applikationer med en tekstgrænseflade og distribueret under MIT-licensen.
Bibliotekets funktioner:
- funktionel stil, der ligner React JS;
- enkel og elegant stil (ifølge forfatteren af biblioteket);
- håndtering af tastatur- og musebegivenheder;
- UTF8 og Unicode-understøttelse;
- True Color support;
- understøttelse af ændring af markørstil;
- animationsstøtte;
- tegning støtte;
- ingen tredjepartsafhængigheder;
- tværplatform (Linux/MacOS, WebAssembly, Windows).
ændringer
Records
- Rettelse af dokumentationsgenerering med Doxygen.
- Tilføjet brugerdefineret tema til Doxygen.
- Opdeling af dokumentation på flere sider.
Samling
- Tilføjet tools$ amalgamate.py-scriptet til at generere "amalgamated" kildekode: ftxui.cpp (534 KB), ftxui.hpp (110 KB) og ftxui_all.hpp (643 KB).
- Tilføjet understøttelse af C++20-moduler.
- Tilføjet understøttelse af Meson.
- Fjernet afhængighed af pthread.
- Fast Bazel-understøttelse.
- Andre forbedringer.
Ændringer i kompatibilitet med tidligere versioner
- Omdøbning:
- Pixel i `Celle
- Billede i overfladen
- ScreenInteractive i appen
- PixelAt-metoden i CellAt
For at sikre kompatibilitet angives aliasser og headere for at undgå at ødelægge eksisterende kode.
- Brug std::string_view i stedet for const std::string& hvor det er muligt. Dette sikrer bedre kompatibilitet med strengliteraler og undgår unødvendig kopiering.
Komponenter
- Signalopfangningssystemet er blevet forbedret og moderniseret ved hjælp af POSIX sigaction for pålidelig signalmaskering. Beskyttelse mod dobbelt terminalgendannelse ved programafslutning ydes ved hjælp af atomisk initialtilstandssporing. Understøttelse af yderligere POSIX-signaler (SIGBUS og SIGSYS som fejlsignaler og SIGQUIT og SIGHUP som forsinkede afslutningssignaler) er blevet tilføjet, og sikkerhedsproblemer med asynkrone signaler er blevet rettet.
- Rettede et problem med markørvisning, når en brugerdefineret Renderer blev brugt i indlejrede containere.
- Rettede markørplacering i inputfelter og rullestabilitet.
- Rettelse af understøttelse af ikke-ASCII-tegn i adgangskodeindtastningstilstand.
- Rettede fejl i markørflimmer ved gentegning i appen.
- Inputbehandling ved hjælp af POSIX-pipes
- Tillader FTXUI-applikationer at læse fra stdin (når en pipe bruges), mens de stadig accepterer tastaturinput i terminalen.
- Bruges som standard.
- Kan deaktiveres ved hjælp af App::HandlePipedInput(false).
- Fås kun i Linux и macOS.
- Mange fejl er blevet rettet.
DOM
- Understøttelse af linjeskift (n) i text() og vtext().
- Nu flytter dbox fokus fra de øverste lag til de nederste, hvilket matcher den visuelle visning.
- Tilføjet understøttelse af bordkantdekoratører. Dette giver dig mulighed for f.eks. at ændre farven på bordkanter.
- Rettede en fejl med heltalsoverløb i ComputeShrinkHard.
- Tilføjet specialisering til vbox/hbox/dbox for at tillade brug af en Element-container som input.
- Tilføjelse af underelementer til gridbox er blevet rettet.
- Fast målervisning.
- Parameteriserede varianter af flex-dekoratorer med _factor-parameteren er blevet tilføjet. Disse giver dig mulighed for at angive brugerdefinerede stræk- eller krympefaktorer:
flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), samt varianter for x- og y-akserne.
Renderingsoptimeringer
- Optimering af linje-for-linje markørbevægelse i Screen::ResetPosition-metoden (uden at rydde skærmen) til ét parametriseret sæt af CSI-kommandoer til at flytte markøren op (x1B[ A) i stedet for at udskrive én x1B[1A pr. linje. Dette reducerede antallet af escape-tegn pr. frame under gentegning (f.eks. ~197 -> 6 bytes for en 50-linjers skærm, ~33x reduktion).
- Optimerede Screen::ToString(), Color::Print() og string_width(), hvilket øgede hastigheden:
- Basisgengivelse på ~27%.
- Tekstgengivelse med ~27%.
- Stilgengivelse med ~38%.
Kilde: linux.org.ru




