Մայիսի 13-ին, ավելի քան մեկ տարվա մշակման հետո, թողարկվեց 7.0.0 հարթակներarası գրադարան FTXUI, նախատեսված C++-ում տեքստային ինտերֆեյսով ծրագրեր ստեղծելու համար և տարածվում է MIT լիցենզիայի ներքո։
Գրարանի հնարավորությունները՝
- ֆունկտիոնալ ոճ, նման React JS;
- 简单且优雅的风格(根据库的作者的说法);
- ալեհունքի և «կ մահափարթագղեր»
- UTF8-ի և Unicode-ի աջակցում;
- True Color-ի աջակցում;
- կուրսորի ոճի փոփոխության աջակցում;
- անիմացիաների աջակցում;
- նկարելու աջակցում;
- ներգրավող կողմերից կախվածության բացակայություն;
- հարթակներarasıություն (Linux/MacOS, WebAssembly, Windows)։
Որոնումներ
Փաստաթղթեր
- Պտատրել է Doxygen-ի փաստաթղթավորման ստեղծումը։
- Ավելացված է Doxygen-ի սեփական թեման։
- Փաստաթղթավորումը բաժանվել է մի քանի էջերի։
Կոմպիլացիա
- Ավելացված է tools$ amalgamate.py սկրիպտը «ամալգամացված» աղբյուրի կոդի ստեղծման համար՝ ftxui.cpp (534 Kb), ftxui.hpp (110 Kb) և ftxui_all.hpp (643 Kb):
- Ավելացված է C++20 մոդուլների աջակցություն։
- Ավելացված է Meson-ի աջակցություն։
- Հեռացվեց pthread-ից կախվածությունը։
- Ամբողջացվել է Bazel-ի աջակցությունը։
- Այլ բարելավումներ։
Հին տարբերակների հետ համատեղելիության փոփոխություններ
- Բարձրագառանալը:
- Pixel -> `Cell
- Image -> Surface
- ScreenInteractive -> App
- метод PixelAt -> CellAt
Համատեղելիության ապահովման համար նախատեսված են մոլորակներ և գլխավոր ֆայլեր՝ գոյություն ունեցող կոդի աշխատանքը չխախտելու համար։
- Օգտագործվում է std::string_view, այլ ոչ թե const std::string& այն վայրերում, որտեղ դա հնարավոր է։ Սա ապահովում է առարկայական անդամների ցանկերի լավագույն համատեղելիություն և թույլ է տալիս խուսափել անհրաժեշտ կրկնություններից։
Կոմպոնենտներ
- Բարելավվել և արդիականացվել է ազդանշանների թափումով համակարգը POSIX sigaction օգտագործելով՝ ազդանշանների հուսալի դիմակավորման համար։ Ապահովվել է կրկնակի վերականգնման պաշտպանության ազդեցությունը հանրագումարում՝ գումարային վրա։ Ավելացված է POSIX հավելյալ ազդանշանների աջակցություն (SIGBUS, SIGSYS, որպես ձախողման ազդանշաններ, և SIGQUIT, SIGHUP, որպես և ժամանակաընթացկային ազդանշաններ) ու վերականգնվել են ասինխրոն ազդանշանների անվտանգության հարցերը։
- Պտատրել է կուրսորի անհարմարեցումը, երբ օգտագործել է հարմարեցրած Renderer-ի մասով խճճված տարրերով։
- Պտատրել է կուրսորի դիրքում դնելը վերափոխելիս ու հսկելու կայունությունը։
- Պտատրել է ոչ ASCII նիշերի աջակցությունը գաղտնիակի մուտքագրման ռեժիմում։
- Լուծել բրենդի մատավորը նկարելիս նոր աշխատանքի պատճառով App-ում։
- Անգլո-բարձրությանը մուտքագրումը POSIX pipes կիրառելով.
- Թույլ է տալիս FTXUI ծրագրերին տվյալները կարդալ stdin (pipe օգտագործելու դեպքում) և միաժամանակ ընդունել մուտքը ստեղնաշարից տերմինալում։
- Օգտագործվում է սկզբնական ընտրությամբ։
- Միանշանակ դուրս է գալիս App::HandlePipedInput(false) օգտագործելը։
- Առկա է միայն Linux և macOS-ում։
- Լուծվել է բազմաթիվ սխալներ։
DOM
- text() և vtext()-ի մեջ տողի (n) բնութագրի աջակցում։
- Հիմա dbox-ն անցնում է վերին շերտերից հատակայինները, ինչը համապատասխանում է տեսողական արտացոլմանը։
- Ավելացված է պատուհանի սահմանների դեկորատորներ։ Սա թույլ է տալիս, օրինակ, փոխել աղյուսակի սահմանների գույնը։
- Տրամադրված է ամբողջական թվերի գերազանցման սխալը ComputeShrinkHard-ում:
- Ավելացվել է մասնագիտություն vbox/hbox/dbox-ում, որպեսզի Element բեռնարկղն օգտագործվի որպես մուտքային տվյալներ:
- gridbox-ում շտկվել է երեխայական տարրերի ավելացումը:
- Շտկվել է gauge-ի ցուցադրումը:
- Ավելացվել են պարամետրային տարբերակներ flex ձևավորման համար _factor պարամետրաներով: Դրանք թույլ են տալիս նշել օգտվողական աստիճանների ձգման կամ սեղմման գործակիցներ:
flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), ինչպես նաև տարբերակներ x և y առանցքներին:
Նկարագրման օպտիմիզացում:
- Կուրսորը տողերով տեղափոխելու օպտիմիզացում Screen::ResetPosition մեթոդում (կտորի մաքրման առանց) մեկ պարամետրային CSI հրահանգների հավաքածուով կուրսորը վերև տեղափոխելու համար (x1B[<n>A), փոխարենը յուրաքանչյուր տողի համար մեկ x1B[1A ցուցադրելու: Սա նվազեցրեց մասերի թվաքանակը նկարագրման ընթացքում (օրինակ, ~197 -> 6 բայթ 50 տողի էկրանին, ~33 անգամ նվազեցում):
- Օպտիմիզացված են Screen::ToString(), Color::Print() և string_width(), ինչի արդյունքում արագացել է:
- Առկա ձևավորումը ~27%-ով:
- Տեքստի ձևավորումը ~27%-ով:
- Մոնտաժման ձևավորումը ~38%-ով:
Ընտանիք: linux.org.ru




