13. maijā, pēc vairāk nekā gada izstrādes, tika izlaista 7.0.0 multiplatformu bibliotēka FTXUI, kas paredzēta C++ lietojumprogrammu ar tekstuāro saskarni izveidošanai un tiek izplatīta saskaņā ar MIT licenci.
Bibliotēkas iespējas:
- funkcionālais stils, līdzīgs React JS;
- vienkāršs un elegants stils (pēc bibliotēkas autores domām);
- notikumu apstrāde no tastatūras un „peles”;
- atbalsts UTF8 un Unicode;
- atbalsts True Color;
- atbalsts kursoru stila maiņai;
- atbalsts animācijām;
- atbalsts zīmēšanai;
- trešo personu atkarību trūkums;
- multiplatformība (Linux/MacOS, WebAssembly, Windows).
Izmaiņas
Dokumentācija
- Tika labota dokumentācijas ģenerēšana ar Doxygen.
- Pievienota sava tēma Doxygen.
- Dokumentācija sadalīta vairākās lapās.
Kompilācija
- Pievienots rīks tools$ amalgamate.py, lai ģenerētu „amalgamētu” avota kodu: ftxui.cpp (534 kB), ftxui.hpp (110 kB) un ftxui_all.hpp (643 kB).
- Pievienots atbalsts C++20 moduļiem.
- Pievienots atbalsts Meson.
- Noņemta atkarība no pthread.
- Labota Bazel atbalsta problēma.
- Citas uzlabošanas.
Atpakaļsaderības izmaiņas
- Pārsaukšanas:
- Pixel uz `Cell
- Image uz Surface
- ScreenInteractive uz App
- metode PixelAt uz CellAt
Lai nodrošinātu saderību, ir nodrošināti aliasi un virsraksti, lai netiktu traucēta esošā koda darbība.
- Tiek izmantots std::string_view vietā const std::string& tur, kur tas ir iespējams. Tas nodrošina labāku saderību ar string literāļiem un novērš nevajadzīgas kopēšanas.
Komponenti
- Uzlabota un modernizēta signālu uztveršanas sistēma, izmantojot POSIX sigaction, lai nodrošinātu signālu drošu maskēšanu. Nodrošināta aizsardzība pret dubulto termināla atjaunošanu, izejot no programmas, izmantojot atomāro sākotnējā stāvokļa izsekošanu. Pievienots atbalsts papildu POSIX signāliem (SIGBUS, SIGSYS kā avārijas signāliem, un SIGQUIT, SIGHUP kā atlikta izbeigšanas signāliem), kā arī labotas asinhrono signālu drošības problēmas.
- Labota kursora attēlošanas problēma, izmantojot pielāgotu Renderer iekšējos konteineros.
- Labota kursora pozicionēšanas problēma ievades laukos un stabilitāte ritināšanā.
- Labots atbalsts ne-ASCII simboliem paroli ievades režīmā.
- Novērsta kursora mirgošana, pārzīmējot App.
- Ievades apstrāde, izmantojot POSIX caurules.
- Ļauj FTXUI lietotnēm lasīt datus no stdin (izmantojot pipe) un vienlaikus pieņemt ievadi no klaviatūras terminālī.
- Tiek izmantots pēc noklusējuma.
- Var tikt atspējots ar App::HandlePipedInput(false).
- Pieejams tikai Linux un macOS.
- Izlabotas daudzas kļūdas.
DOM
- Atbalsts pārejas rindiņai (n) text() un vtext() iekšienē.
- Tagad dbox pārsūtīs fokusu no augšējiem slāņiem uz apakšējiem, kas atbilst vizuālajam attēlojumam.
- Pievienots atbalsts tabulu apmalēm. Tas ļauj, piemēram, mainīt tabulas apmalīšu krāsu.
- Izlabota vesela skaitļa pārplašināšanas kļūda ComputeShrinkHard.
- Pievienota specializācija vbox/hbox/dbox, kas ļauj izmantot Element konteineru kā ievadi.
- gridbox iekšienē izlabota bērnu elementu pievienošana.
- Izlabots gauge attēlojums.
- Pievienoti parametrizēti flex dekoratoru varianti ar parametru _factor. Tie ļauj noteikt lietotāja elastības vai sasprindzinājuma koeficientus:
flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), kā arī varianti x un y asīm.
Rendēšanas optimizācijas.
- Kursora pārvietošanas optimizācija pa rindām Screen::ResetPosition metodē (bez ekrāna notīrīšanas) uz vienu parametrizētu CSI komandu kopu, lai pārvietotu kursora augšup (x1B[A), nevis izvadītu x1B[1A katrai rindiņai. Tas samazināja escape simbolu skaitu kadrā laikā (piemēram, ~197 -> 6 bajti ekrānam ar 50 rindām, ~33 reizes samazinājums).
- Optimizēti Screen::ToString(), Color::Print() un string_width(), kas paātrināja:
- Bāzes renderēšana par ~27%.
- Teksta renderēšana par ~27%.
- Stilu renderēšana par ~38%.
Avots: linux.org.ru




