13. mai, ĂŒle aasta kestnud arenduse jĂ€rel, ilmus 7.0.0 platvormidevaheline teek FTXUI, mis on mĂ”eldud C++ rakenduste loomiseks, millel on tekstipĂ”hine liides ja mis on jaotatud MIT litsentsi alusel.
Raamatukogu vÔimalused:
- funktsionaalne stiil, sarnaselt React JS-iga;
- lihtne ja elegantne stiil (autori arvates);
- klaviatuuri ja hiire sĂŒndmuste töötlemine;
- UTF8 ja Unicode tugi;
- True Color tugi;
- kursori stiili muutmise tugi;
- animatsioonide tugi;
- joonistamise toimetamine;
- ilma kolmandate osapoolte sÔltuvusteta;
- platvormideĂŒlene (Linux/MacOS, WebAssembly, Windows).
Muudatused
Dokumentatsioon
- Dokumentatsiooni genereerimine Doxygeniga on parandatud.
- Lisatud oma teema Doxygenile.
- Dokumentatsiooni jagamine mitmeks lehekĂŒljeks.
Kompileerimine
- Lisatud skript tools$ amalgamate.py âamalgameeritudâ lĂ€htekoodi genereerimiseks: ftxui.cpp (534 KB), ftxui.hpp (110 KB) ja ftxui_all.hpp (643 KB).
- Lisatud C++20 moodulite tugi.
- Lisatud Mesoni tugi.
- Eemaldatud sÔltuvus pthread'ist.
- Parandatud Bazeli tugi.
- Teised tÀiustused.
TagasikÀigu muudatused
- Nimede muutmine:
- Pixel muutus `Cell'iks
- Image muutus Surface'iks
- ScreenInteractive muutus App'iks
- meetod PixelAt muutus CellAt'iks
Tagamaks ĂŒhilduvust, on ette nĂ€htud alias'id ja pealkirjad, et mitte rikkuda olemasolevat koodi.
- Kasutatakse std::string_view'i, kus see on vĂ”imalik, selle asemel et const std::string& kasutada. See tagab parema ĂŒhilduvuse stringi litteratega ning vĂ”imaldab vĂ€ltida tarbetuid kopeerimisi.
Komponendid
- Signaali pĂŒĂŒdmise sĂŒsteem on tĂ€iustatud ja moderniseeritud, kasutades POSIX sigaction'i signaalide usaldusvÀÀrseks peitmiseks. Tagatud on topelt terminali taastamise kaitse programmi vĂ€ljumisel, kasutades aatomset jĂ€lgimist algse oleku osas. Lisatud on tĂ€iendavad POSIX signaalide (SIGBUS, SIGSYS kui rikke signaalid, ja SIGQUIT, SIGHUP kui viivitatud lĂ”petamise signaalid) tugi ja parandatud asĂŒnkroonsete signaalide turvaprobleemid.
- Kohandatud Rendereri kasutamisel on parandatud kursori kuvamise probleem sisemistes konteinerites.
- Parandatud kursori positsioneerimine sisestusvÀljadele ja kerimise stabiilsus.
- Parandatud mitte-ASCII sĂŒmbolite tugi paroolisisestusreĆŸiimis.
- Eemaldatud kursori vilkumine App'is ĂŒmber joonistamisel.
- Sisendi töötlemine POSIX torude abil
- Lubab FTXUI rakendustel lugeda andmeid stdin'ist (toru kasutamisel) ning samal ajal vastu vÔtta sisendit klaviatuurilt terminalis.
- Kasutatakse vaikevalikuna.
- Seda saab vĂ€lja lĂŒlitada, kasutades App::HandlePipedInput(false).
- Ainult Linuxis ja macOS'is saadaval.
- Palju vigu on parandatud.
DOM
- Toetab reavahet (n) text() ja vtext() sees.
- NĂŒĂŒd edastab dbox fookuse ĂŒlemistelt kihtidelt alumistele, mis vastab visuaalsele kuvamisele.
- Lisatud tabeli piirdekaunistuste tugi. See vÔimaldab nÀiteks tabeli piiride vÀrvi muutmist.
- Parandatud tĂ€isarvude ĂŒlevoolu viga ComputeShrinkHardis.
- Lisatud spetsialiseerimine vbox/hbox/dbox, et vÔimaldada Element konteineri kasutamine sisendina.
- Gridboxis on parandatud alamelementide lisamist.
- Parandatud gauge'i kuvamine.
- Lisatud parameetriga variandid flex dekoratoreid parameetriga _factor. Need vÔimaldavad mÀÀrata kasutaja mÀÀratud pikendamise vÔi kokkusurumise koefitsiendid:
flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), samuti variandid x ja y telgede jaoks.
Kujutise optimeerimine.
- Kursori liikumise optimeerimine Screen::ResetPosition meetodis (ilma ekraani puhastamiseta) ĂŒhe parameetrilise CSI kĂ€susĂŒsteemina, et nihutada kursori ĂŒles (x1B[<n>A) asemel, et saata ĂŒks x1B[1A iga rea jaoks. See vĂ€hendas escape-mĂ€rkide arvu kaadris ĂŒmberjoonistamise ajal (nĂ€iteks ~197 -> 6 bitti 50 reaga ekraani jaoks, ~33-kordne vĂ€henemine).
- Optimeeritud on Screen::ToString(), Color::Print() ja string_width(), mis kiirus:
- PÔhirenderdus ~27% kiiremini.
- Teksti renderdamine ~27% kiiremini.
- Stiilide renderdamine ~38% kiiremini.
Allikas: linux.org.ru




