FTXUI 7.0.0









Le 13 mai, aprÚs plus d'un an de développement, la version 7.0.0 de la bibliothÚque multiplateforme a été lancée FTXUI, destinée à la création d'applications C++ avec interface textuelle et distribuée sous licence MIT.

Fonctionnalités de la bibliothÚque :

  • style fonctionnel, similaire Ă  React JS ;
  • style simple et Ă©lĂ©gant (selon l'auteur de la bibliothĂšque) ;
  • traitement des Ă©vĂ©nements du clavier et de la « souris » ;
  • prise en charge de l'UTF8 et de l'Unicode ;
  • prise en charge des vraies couleurs ;
  • prise en charge du changement de style du curseur ;
  • prise en charge des animations ;
  • prise en charge du dessin ;
  • absence de dĂ©pendances externes ;
  • multiplateforme (Linux/MacOS, WebAssembly, Windows).
Changements

Documentation

  • GĂ©nĂ©ration de documentation avec Doxygen corrigĂ©e.
  • Ajout d'un thĂšme personnalisĂ© pour Doxygen.
  • SĂ©paration de la documentation en plusieurs pages.

Compilation

  • Ajout d'un script tools$ amalgamate.py pour gĂ©nĂ©rer le code source « amalgamĂ© » : ftxui.cpp (534 Ko), ftxui.hpp (110 Ko) et ftxui_all.hpp (643 Ko).
  • Ajout de la prise en charge des modules C++20.
  • Ajout de la prise en charge de Meson.
  • Suppression de la dĂ©pendance Ă  pthread.
  • Correction de la prise en charge de Bazel.
  • Autres amĂ©liorations.

Modifications de compatibilité avec les versions antérieures

  • Renommages :
    • Pixel en `Cell
    • Image en Surface
    • ScreenInteractive en App
    • mĂ©thode PixelAt en CellAt
      Des alias et des en-tĂȘtes sont prĂ©vus pour assurer la compatibilitĂ© sans perturber le code existant.
  • Utilisation de std::string_view au lieu de const std::string& lorsque cela est possible. Cela assure une meilleure compatibilitĂ© avec les littĂ©raux de chaĂźne et permet d'Ă©viter des copies inutiles.

Composants

  • Le systĂšme d'interception des signaux a Ă©tĂ© amĂ©liorĂ© et modernisĂ© en utilisant POSIX sigaction pour un masquage fiable des signaux. Protection contre la double restauration du terminal lors de la sortie du programme grĂące au suivi atomique de l'Ă©tat d'origine. Prise en charge de signaux POSIX supplĂ©mentaires (SIGBUS, SIGSYS, en tant que signaux d'Ă©chec, et SIGQUIT, SIGHUP, en tant que signaux de fin diffĂ©rĂ©e) et correction de problĂšmes de sĂ©curitĂ© des signaux asynchrones.
  • Correction d'un problĂšme d'affichage du curseur lors de l'utilisation d'un Renderer personnalisable dans des conteneurs imbriquĂ©s.
  • Correction du positionnement du curseur dans les champs de saisie et stabilitĂ© du dĂ©filement.
  • Correction de la prise en charge des caractĂšres non ASCII en mode de saisie de mot de passe.
  • Élimination du scintillement du curseur lors du redessin dans l'App.
  • Traitement des entrĂ©es en utilisant les pipes POSIX.
    • Permet aux applications FTXUI de lire les donnĂ©es Ă  partir de stdin (lors de l'utilisation d'un pipe) tout en acceptant toujours l'entrĂ©e au clavier dans le terminal.
    • UtilisĂ© par dĂ©faut.
    • Peut ĂȘtre dĂ©sactivĂ© en utilisant App::HandlePipedInput(false).
    • Disponible uniquement sur Linux et macOS.
  • De nombreuses erreurs corrigĂ©es.

DOM

  • Prise en charge des sauts de ligne (n) Ă  l'intĂ©rieur de text() et vtext().
  • DĂ©sormais, dbox transfĂšre le focus des couches supĂ©rieures aux couches infĂ©rieures, correspondant Ă  l'affichage visuel.
  • Ajout de la prise en charge des dĂ©corateurs de bordure de tableau. Cela permet, par exemple, de modifier la couleur des bordures du tableau.
  • Correction d'une erreur de dĂ©bordement entier dans ComputeShrinkHard.
  • Ajout de spĂ©cialisation dans vbox/hbox/dbox pour permettre d'utiliser le conteneur Element comme entrĂ©e.
  • Correction de l'ajout d'Ă©lĂ©ments enfants dans gridbox.
  • Correction de l'affichage du gauge.
  • Ajout de variantes paramĂ©trĂ©es de dĂ©corateurs flex avec le paramĂštre _factor. Ils permettent de spĂ©cifier des coefficients d'Ă©tirement ou de compression personnalisĂ©s :
    flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), ainsi que des variantes pour les axes x et y.

Optimisations de rendu

  • Optimisation du dĂ©placement du curseur dans les lignes dans la mĂ©thode Screen::ResetPosition (sans effacer l'Ă©cran) en un ensemble de commandes CSI paramĂ©trĂ© pour dĂ©placer le curseur vers le haut (x1B[A) au lieu de gĂ©nĂ©rer un x1B[1A pour chaque ligne. Cela a rĂ©duit le nombre de caractĂšres d'Ă©chappement par image lors du redessinage (par exemple, ~197 -> 6 octets pour un Ă©cran de 50 lignes, rĂ©duction d'environ 33 fois).
  • OptimisĂ©s Screen::ToString(), Color::Print() et string_width(), ce qui a accĂ©lĂ©rĂ© :
    • Le rendu de base d'environ 27%.
    • Le rendu de texte d'environ 27%.
    • Le rendu de styles d'environ 38%.

Source : linux.org.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster