FTXUI 6.1.9
C++ functional terminal UI.
Chargement...
Recherche...
Aucune correspondance
ftxui / dom

title-img

Ce module définit un ensemble hiérarchique de ftxui::Element. Un élément gère la disposition et peut être réactif aux changements de dimensions du terminal. Considérez l'exemple suivant où ce module est utilisé pour créer une disposition simple avec un certain nombre d'opérateurs :

La section Example fournit une collection d'exemples.

Exemple :

namespace ftxui {
...
// Définir le document
Element document = vbox({
text("La fenêtre") | bold | color(Color::Blue),
gauge(0.5)
text("Le pied de page")
});
// Ajouter une bordure, en appelant la fonction décoratrice `ftxui::border`.
document = border(document);
// Ajouter une autre bordure, en utilisant l'opérateur pipe.
document = document | border.
// Ajouter une autre bordure, en utilisant l'opérateur |=.
document |= border
...
}
Element text(std::wstring text)
Affiche un morceau de texte unicode.
Definition text.cpp:160
Decorator color(Color)
Décore en utilisant une couleur de premier plan.
Element vbox(Elements)
Un conteneur affichant les éléments verticalement un par un.
Definition vbox.cpp:96
L'espace de noms FTXUI ftxui::
Definition animation.hpp:10
Element gauge(float progress)

Liste des éléments

La liste de tous les éléments est incluse et peut être accédée en incluant le fichier d'en-tête correspondant :

// Copyright 2020 Arthur Sonzogni. Tous droits réservés.
// L'utilisation de ce code source est régie par la licence MIT que l'on peut trouver dans
// le fichier LICENSE.
#ifndef FTXUI_DOM_ELEMENTS_HPP
#define FTXUI_DOM_ELEMENTS_HPP
#include <functional>
#include <memory>
namespace ftxui {
class Node;
using Element = std::shared_ptr<Node>;
using Elements = std::vector<Element>;
using Decorator = std::function<Element(Element)>;
using GraphFunction = std::function<std::vector<int>(int, int)>;
/// @brief BorderStyle est une énumération qui représente les différents styles
/// de bordures pouvant être appliqués aux éléments de l'interface utilisateur du terminal.
///
/// BorderStyle est une énumération qui représente les différents styles de
/// bordures pouvant être appliqués aux éléments de l'interface utilisateur du terminal.
/// Il est utilisé pour définir l'apparence visuelle des bordures autour des éléments,
/// tels que les fenêtres, les cadres ou les séparateurs.
/// @ingroup dom
};
// Enchaîner des éléments dans un décorateur.
// Par exemple, les lignes suivantes sont équivalentes :
// -> text("ftxui") | bold | underlined
// -> underlined(bold(text("FTXUI")))Element operator|(Element, Decorator);
// --- Composant ---
Element text(std::string text);
Element vtext(std::string text);
float right,
Color unselected_color,
Color selected_color);
float down,
Color unselected_color,
Color selected_color);
Element gauge(float progress);
Element gaugeLeft(float progress);
Element gaugeRight(float progress);
Element gaugeUp(float progress);
Element gaugeDown(float progress);
Element gaugeDirection(float progress, Direction direction);
Decorator borderWith(const Pixel&);
Element window(Element title, Element content, BorderStyle border = ROUNDED);
Element spinner(int charset_index, size_t image_index);
Element paragraph(const std::string& text);
Element paragraphAlignLeft(const std::string& text);
Element paragraphAlignRight(const std::string& text);
Element paragraphAlignCenter(const std::string& text);
Element paragraphAlignJustify(const std::string& text);
Element canvas(ConstRef<Canvas>);
Element canvas(int width, int height, std::function<void(Canvas&)>);
Element canvas(std::function<void(Canvas&)>);
// -- Décorateur ---
Decorator color(const LinearGradient&);
Decorator bgcolor(const LinearGradient&);
Element color(const LinearGradient&, Element);
Element bgcolor(const LinearGradient&, Element);
Decorator focusPosition(int x, int y);
Decorator focusPositionRelative(float x, float y);
Decorator hyperlink(std::string link);
Element hyperlink(std::string link, Element child);
Decorator selectionColor(Color foreground);
Decorator selectionStyle(std::function<void(Pixel&)> style);
// --- Disposition ---
// Horizontal, Vertical ou empilé d'éléments.
Element flexbox(Elements, FlexboxConfig config = FlexboxConfig());
Element gridbox(std::vector<Elements> lines);
Element hflow(Elements); // Aide : flexbox par défaut avec direction de ligne.
Element vflow(Elements); // Aide : flexbox par défaut avec direction de colonne.
// -- Flexibilité ---
// Définit comment partager l'espace restant lorsque tout n'est pas utilisé à l'intérieur d'un
// conteneur.
Element flex(Element); // Développer/Réduire si possible/nécessaire.
Element flex_grow(Element); // Développer l'élément si possible.
Element flex_shrink(Element); // Réduire l'élément si nécessaire.
Element xflex(Element); // Développer/Réduire si possible/nécessaire sur l'axe X.
Element xflex_grow(Element); // Développer l'élément si possible sur l'axe X.
Element xflex_shrink(Element); // Réduire l'élément si nécessaire sur l'axe X.
Element yflex(Element); // Développer/Réduire si possible/nécessaire sur l'axe Y.
Element yflex_grow(Element); // Développer l'élément si possible sur l'axe Y.
Element yflex_shrink(Element); // Réduire l'élément si nécessaire sur l'axe Y.
Element notflex(Element); // Réinitialiser l'attribut flex.
Element filler(); // Un élément vide extensible.
// -- Surcharger la taille ---
// --- Cadre ---
// Un cadre est une zone défilante. La zone interne est potentiellement plus grande que
// la zone externe. La zone interne est défilée afin de rendre visible l'élément focalisé.
Element select(Element e); // Obsolète - Alias pour focus.
// --- Curseur ---
// Ceux-ci sont similaires à `focus`, mais changent également la forme du curseur.
// --- Divers ---
Decorator reflect(Box& box);
// Avant de dessiner l'|element|, effacez le pixel en dessous. Ceci est utile en
// combinaison avec dbox.
// --- Utilitaire --------------------------------------------------------------------
namespace Dimension {
Dimensions Fit(Element&, bool extend_beyond_screen = false);
} // namespace Dimension
} // namespace ftxui
// Rendre le conteneur capable de prendre n'importe quel nombre d'enfants en entrée.
#include "ftxui/dom/take_any_args.hpp"
// Inclure les anciennes définitions utilisant wstring.
#endif // FTXUI_DOM_ELEMENTS_HPP
Decorator bgcolor(Color)
Décore en utilisant une couleur d'arrière-plan.
Element window(Element title, Element content, BorderStyle border=ROUNDED)
Dessine une fenêtre avec un titre et une bordure autour de l'élément.
Element borderDouble(Element)
Dessine une double bordure autour de l'élément.
Element focusCursorBarBlinking(Element)
Identique à focus, mais définit la forme du curseur comme une barre clignotante.
Definition frame.cpp:189
Element xflex(Element)
Développer/Réduire si possible/nécessaire sur l'axe X.
Definition flex.cpp:129
Decorator focusPositionRelative(float x, float y)
Utilisé à l'intérieur d'un frame, cela force la vue à être défilée vers une position donnée....
Element separatorStyled(BorderStyle)
Dessine une séparation verticale ou horizontale entre deux autres éléments.
Element xflex_grow(Element)
S'étend si possible sur l'axe X.
Definition flex.cpp:147
Element underlinedDouble(Element)
Applique un double soulignement au texte.
Element clear_under(Element element)
Avant de dessiner |child|, effacez les pixels en dessous. Ceci est utile en combinaison avec dbox.
Element borderDashed(Element)
Dessine une bordure en pointillés autour de l'élément.
Element separatorEmpty()
Dessine une séparation verticale ou horizontale entre deux autres éléments, en utilisant le style EMP...
Element vscroll_indicator(Element)
Affiche une barre de défilement verticale à droite. Les couleurs suivent le contenu.
Element nothing(Element element)
Une décoration qui ne fait absolument rien.
Definition dom/util.cpp:28
Decorator size(WidthOrHeight, Constraint, int value)
Applique une contrainte sur la taille d'un élément.
Direction
Direction est une énumération qui représente les quatre directions cardinales.
Definition direction.hpp:13
Element flex(Element)
Permet à un élément enfant de s'étendre proportionnellement à l'espace restant dans un conteneur.
Definition flex.cpp:123
Element paragraphAlignRight(const std::string &text)
Renvoie un élément affichant le paragraphe sur plusieurs lignes, aligné à droite.
Element focusCursorUnderlineBlinking(Element)
Identique à focus, mais définit la forme du curseur comme un soulignement clignotant.
Definition frame.cpp:217
Element bold(Element)
Utilise une police en gras, pour les éléments avec plus d'emphase.
Definition bold.cpp:33
Element separatorLight()
Dessine une séparation verticale ou horizontale entre deux autres éléments, en utilisant le style LIG...
Element spinner(int charset_index, size_t image_index)
Utile pour représenter l'effet du temps et/ou des événements. Cela affiche une "vidéo" en art ASCII.
Element borderRounded(Element)
Dessine une bordure arrondie autour de l'élément.
Element emptyElement()
Definition dom/util.cpp:132
Element yflex(Element)
Développer/Réduire si possible/nécessaire sur l'axe Y.
Definition flex.cpp:135
Element flex_shrink(Element)
Minimiser si nécessaire.
Definition flex.cpp:159
Element focusCursorBar(Element)
Identique à focus, mais définit la forme du curseur comme un bloc fixe.
Definition frame.cpp:175
Element focusCursorBlock(Element)
Identique à focus, mais définit la forme du curseur comme un bloc fixe.
Definition frame.cpp:147
Element underlined(Element)
Souligne l'élément donné.
Element center(Element)
Centre un élément horizontalement et verticalement.
Element focusCursorUnderline(Element)
Identique à focus, mais définit la forme du curseur comme un soulignement fixe.
Definition frame.cpp:203
Element borderHeavy(Element)
Dessine une bordure épaisse autour de l'élément.
Element inverted(Element)
Ajoute un filtre qui inversera les couleurs de premier plan et d'arrière-plan.
Definition inverted.cpp:33
Element paragraphAlignCenter(const std::string &text)
Renvoie un élément affichant le paragraphe sur plusieurs lignes, aligné au centre.
Element align_right(Element)
Aligne un élément sur le côté droit.
Decorator focusPosition(int x, int y)
Utilisé à l'intérieur d'un frame, cela force la vue à être défilée vers une position donnée....
Element yflex_grow(Element)
S'étend si possible sur l'axe Y.
Definition flex.cpp:153
Element hscroll_indicator(Element)
Affiche une barre de défilement horizontale en bas. Les couleurs suivent le contenu.
Element flex_grow(Element)
S'étend si possible.
Definition flex.cpp:141
Element separatorDashed()
Dessine une séparation verticale ou horizontale entre deux autres éléments, en utilisant le style DAS...
Element notflex(Element)
Rend l'élément non flexible.
Definition flex.cpp:177
Element strikethrough(Element)
Applique un barré au texte.
Element italic(Element)
Applique un style italique au texte.
Definition italic.cpp:17
Element dbox(Elements)
Empile plusieurs éléments les uns sur les autres.
Element xflex_shrink(Element)
Minimiser si nécessaire sur l'axe X.
Definition flex.cpp:165
Element separatorCharacter(std::string)
Dessine une séparation verticale ou horizontale entre deux autres éléments.
Element vtext(std::wstring text)
Affiche un morceau de texte unicode verticalement.
Definition text.cpp:220
Element borderLight(Element)
Dessine une bordure fine autour de l'élément.
Element focus(Element)
Définit l'élément child comme étant celui qui est focalisé parmi ses frères.
Definition frame.cpp:101
Element paragraphAlignLeft(const std::string &text)
Renvoie un élément affichant le paragraphe sur plusieurs lignes, aligné à gauche.
Decorator borderWith(const Pixel &)
Identique à border mais avec un Pixel constant autour de l'élément.
Decorator borderStyled(BorderStyle)
Identique à border mais avec différents styles.
Element separator()
Dessine une séparation verticale ou horizontale entre deux autres éléments.
Element filler()
Un élément qui occupera proportionnellement l'espace disponible dans un conteneur.
Definition flex.cpp:98
Element dim(Element)
Utilise une police de caractères claire, pour les éléments moins mis en valeur.
Definition dim.cpp:33
Element automerge(Element child)
Permet aux caractères d'être fusionnés automatiquement avec d'autres à proximité.
Definition automerge.cpp:17
Element blink(Element)
Le texte affiché alterne entre visible et masqué.
Definition blink.cpp:33
Element vcenter(Element)
Centre un élément verticalement.
Element separatorDouble()
Dessine une séparation verticale ou horizontale entre deux autres éléments, en utilisant le style DOU...
Element focusCursorBlockBlinking(Element)
Identique à focus, mais définit la forme du curseur comme un bloc clignotant.
Definition frame.cpp:161
Element paragraphAlignJustify(const std::string &text)
Renvoie un élément affichant le paragraphe sur plusieurs lignes, aligné en utilisant un alignement ju...
Element border(Element)
Dessine une bordure autour de l'élément.
Element separatorHeavy()
Dessine une séparation verticale ou horizontale entre deux autres éléments, en utilisant le style HEA...
Element borderEmpty(Element)
Dessine une bordure vide autour de l'élément.
Element yflex_shrink(Element)
Minimiser si nécessaire sur l'axe Y.
Definition flex.cpp:171
Element hcenter(Element)
Centre un élément horizontalement.
BorderStyle
BorderStyle est une énumération qui représente les différents styles de bordures pouvant être appliqu...
Definition elements.hpp:35
@ EMPTY
Definition elements.hpp:41
@ DOUBLE
Definition elements.hpp:39
@ HEAVY
Definition elements.hpp:38
@ ROUNDED
Definition elements.hpp:40
@ DASHED
Definition elements.hpp:37
@ LIGHT
Definition elements.hpp:36
L'espace de noms FTXUI ftxui::Dimension::
Dimensions Fit(Element &, bool extend_beyond_screen=false)
WidthOrHeight
Definition elements.hpp:160
Element gaugeDirection(float progress, Direction direction)
std::function< Element(Element)> Decorator
Definition elements.hpp:24
Element flexbox(Elements, FlexboxConfig config=FlexboxConfig())
Un conteneur affichant des éléments sur des lignes/colonnes et capable de passer à la colonne/ligne s...
Definition flexbox.cpp:251
Element separatorVSelector(float up, float down, Color unselected_color, Color selected_color)
Dessine une barre verticale, avec la zone entre le haut et le bas colorée différemment.
std::shared_ptr< Node > Element
Definition elements.hpp:22
Element xframe(Element)
Identique à frame, mais seulement sur l'axe x.
Definition frame.cpp:126
Element gaugeRight(float progress)
Element hflow(Elements)
Un conteneur affichant des éléments en lignes de gauche à droite. Quand il est rempli,...
Definition flexbox.cpp:269
Decorator selectionStyle(std::function< void(Pixel &)> style)
Définit le style d'un élément lorsqu'il est sélectionné.
Element separatorHSelector(float left, float right, Color unselected_color, Color selected_color)
Dessine une barre horizontale, avec la zone entre la gauche et la droite colorée différemment.
Element hbox(Elements)
Un conteneur affichant les éléments horizontalement un par un.
Definition hbox.cpp:94
Element canvas(ConstRef< Canvas >)
Produit un élément à partir d'un Canevas, ou une référence à un Canevas.
std::vector< Element > Elements
Definition elements.hpp:23
Decorator selectionForegroundColor(Color foreground)
Définit la couleur de premier plan d'un élément lorsqu'il est sélectionné. Notez que le style est app...
Component operator|(Component component, ComponentDecorator decorator)
Decorator selectionBackgroundColor(Color foreground)
Définit la couleur d'arrière-plan d'un élément lorsqu'il est sélectionné. Notez que le style est appl...
Element gaugeUp(float progress)
Element yframe(Element)
Identique à frame, mais seulement sur l'axe y.
Definition frame.cpp:134
Decorator selectionColor(Color foreground)
Définit la couleur d'un élément lorsqu'il est sélectionné.
Element gaugeLeft(float progress)
Element select(Element e)
Définit l'élément child comme étant celui qui est focalisé parmi ses frères.
Definition frame.cpp:108
Element selectionStyleReset(Element)
Réinitialise le style de sélection d'un élément.
Decorator reflect(Box &box)
Definition reflect.cpp:43
std::function< std::vector< int >(int, int)> GraphFunction
Definition elements.hpp:25
Element gridbox(std::vector< Elements > lines)
Un conteneur affichant une grille d'éléments.
Elements paragraph(std::wstring text)
Element frame(Element)
Permet à un élément d'être affiché dans une zone 'virtuelle'. Sa taille peut être plus grande que son...
Definition frame.cpp:118
Decorator hyperlink(std::string link)
Component & operator|=(Component &component, ComponentDecorator decorator)
@ LESS_THAN
Definition elements.hpp:161
@ GREATER_THAN
Definition elements.hpp:161
Element vflow(Elements)
Un conteneur affichant des éléments en colonnes de haut en bas. Quand il est rempli,...
Definition flexbox.cpp:287
Element graph(GraphFunction)
Dessine un graphique en utilisant une GraphFunction.
Element gaugeDown(float progress)

text

Le widget le plus simple. Il affiche un texte.

text("Je suis un morceau de texte");
I am a piece of text.

vtext

Identique à ftxui::text, mais affiché verticalement.

Code:

vtext("HELLO");

Terminal output:

H
E
L
L
O

paragraph 

Similaire à ftxui::text, mais les mots individuels sont enveloppés sur plusieurs lignes, en fonction de la largeur de son conteneur.

Exemple de code :

paragraph("Un très long texte")

ezgif com-gif-maker (4)

Pour un exemple plus détaillé, reportez-vous à exemple détaillé. Paragraph inclut également un certain nombre d'autres variantes comme indiqué ci-dessous :

namespace ftxui {
Element paragraph(std::string text);
Element paragraphAlignLeft(std::string text);
Element paragraphAlignRight(std::string text);
Element paragraphAlignCenter(std::string text);
Element paragraphAlignJustify(std::string text);
}

border

Ajoute une bordure autour d'un élément.

Code :

border(text("L'élément"))

Sortie terminale :

┌───────────┐
│The element│
└───────────┘
Note
Vous pouvez obtenir le même comportement en utilisant l'opérateur pipe.

Code :
text("L'élément") | border

Border est également disponible dans une variété de styles, comme indiqué ci-dessous :

window

Une ftxui::window est une ftxui::border, mais avec un en-tête supplémentaire. Pour ajouter une fenêtre autour d'un élément, enveloppez-le et spécifiez une chaîne de caractères comme en-tête. Code :

window("La fenêtre", text("L'élément"))

Sortie terminale :

┌The window─┐
│The element│
└───────────┘

separator

Affiche une ligne verticale/horizontale pour diviser visuellement le contenu d'un conteneur en deux.

Code :

border(
hbox({
text("Gauche"),
separator(),
text("Droite")
})
)

Sortie terminale :

┌────┬─────┐
│left│right│
└────┴─────┘

Les séparateurs sont disponibles dans une variété de styles, comme indiqué ci-dessous :

namespace ftxui {
float right,
Color background,
Color foreground);
float down,
Color background,
Color foreground);
}

gauge

Ceci est un élément visuel qui représente un ratio de progression.

Code :

border(gauge(0.5))

Sortie terminale :

┌────────────────────────────────────────────────────────────────────────────┐
│██████████████████████████████████████ │
└────────────────────────────────────────────────────────────────────────────┘

Les jauges peuvent être affichées dans de nombreuses orientations, comme indiqué ci-dessous :

namespace {
Element gauge(float ratio);
Element gaugeLeft(float ratio);
Element gaugeRight(float ratio);
Element gaugeUp(float ratio);
Element gaugeDown(float ratio);
Element gaugeDirection(float ratio, GaugeDirection);
}

graph

Voir :

Element graph(GraphFunction);

Couleurs

La plupart des consoles de terminal peuvent afficher du texte coloré et des arrière-plans colorés. FTXUI prend en charge toutes les palettes de couleurs :

Decorator color(Color);
Decorator bgcolor(Color);
Element color(const LinearGradient &gradient, Element child)
Définit la couleur de premier plan d'un élément avec un effet de dégradé linéaire.
Element bgcolor(const LinearGradient &gradient, Element child)
Définit la couleur de fond d'un élément avec un effet de dégradé linéaire.

Galerie de couleurs : image

Palette16 

Sur la plupart des terminaux, les couleurs suivantes sont prises en charge :

  • Par défaut
  • Noir
  • GrisFoncé
  • GrisClair
  • Blanc
  • Bleu
  • BleuClair
  • Cyan
  • CyanClair
  • Vert
  • VertClair
  • Magenta
  • MagentaClair
  • Rouge
  • RougeClair
  • Jaune
  • JauneClair

Exemple d'utilisation des couleurs ci-dessus avec l'opérateur pipe :

text("Premier plan bleu") | color(Color::Blue);
text("Arrière-plan bleu") | bgcolor(Color::Blue);
text("Noir sur blanc") | color(Color::Black) | bgcolor(Color::White);

Palette256 

Sur les terminaux prenant en charge 256 couleurs.

text("RoseVif") | color(Color::HotPink);

TrueColor

Sur les terminaux prenant en charge TrueColor, vous pouvez utiliser directement l'espace colorimétrique RVB 24 bits :

Utilisez les constructeurs ci-dessous pour spécifier les valeurs RVB ou TSV de votre couleur :

Il existe deux constructeurs :

ftxui::Color::RGB(uint8_t red, uint8_t green, uint8_t blue);
ftxui::Color::HSV(uint8_t hue, uint8_t saturation, uint8_t value);
static Color HSV(uint8_t hue, uint8_t saturation, uint8_t value)
Construit une couleur à partir de sa représentation HSV. https://en.wikipedia.org/wiki/HSL_and_HSV.
static Color RGB(uint8_t red, uint8_t green, uint8_t blue)
Construit une couleur à partir de sa représentation RGB. https://en.wikipedia.org/wiki/RGB_color_mode...

LinearGradient

FTXUI prend en charge le dégradé linéaire. Soit au premier plan, soit à l'arrière-plan.

Decorator color(const LinearGradient&);
Decorator bgcolor(const LinearGradient&);

Un ftxui::LinearGradient est défini par un angle en degrés et une liste de points de couleur.

auto gradient = LinearGradient()
.Angle(45)
.AddStop(0.0, Color::Red)
.AddStop(0.5, Color::Green)
.AddStop(1.0, Color::Blue);

Vous pouvez également utiliser des constructeurs simplifiés :

LinearGradient(Color::Red, Color::Blue);
LinearGradient(45, Color::Red, Color::Blue);

Voir la démo.

Style

En plus du texte coloré et des arrière-plans colorés. De nombreux terminaux prennent en charge les effets de texte tels que : bold, italic, dim, underlined, inverted, blink.

Element bold(Element);
Element italic(Element);
Element dim(Element);
Element inverted(Element);
Element underlined(Element);
Element underlinedDouble(Element);
Element strikethrough(Element);
Element blink(Element);
Decorator color(Color);
Decorator bgcolor(Color);
Decorator colorgrad(LinearGradient);
Decorator bgcolorgrad(LinearGradient);

Exemple

image

Pour utiliser ces effets, enveloppez simplement vos éléments avec l'effet désiré :

underlined(bold(text("Ce texte est en gras et souligné")))

Alternativement, utilisez l'opérateur pipe pour le chaîner sur votre élément :

text("Ce texte est en gras") | bold | underlined

Layout

Permet d'organiser les éléments des manières suivantes :

  • Horizontalement avec ftxui::hbox
  • Verticalement avec ftxui::vbox
  • À l'intérieur d'une grille avec ftxui::gridbox
  • Enveloppé dans une direction en utilisant le ftxui::flexbox.

Exemple utilisant ftxui::hbox, ftxui::vbox et ftxui::filler.

image

Exemple utilisant ftxui::gridbox :

image

Exemple utilisant flexbox :

image

Consultez cet exemple et la démo associée.

L'élément peut également devenir flexible en utilisant le décorateur ftxui::flex.

Code :

hbox({
text("gauche") | border ,
text("milieu") | border | flex,
text("droite") | border,
});

Sortie terminale :

┌────┐┌─────────────────────────────────────────────────────┐┌─────┐
│left││middle ││right│
└────┘└─────────────────────────────────────────────────────┘└─────┘

Code :

hbox({
text("gauche") | border ,
text("milieu") | border | flex,
text("droite") | border | flex,
});

Sortie terminale :

┌────┐┌───────────────────────────────┐┌───────────────────────────────┐
│left││middle ││right │
└────┘└───────────────────────────────┘└───────────────────────────────┘

Table

Permet un formatage facile des données sous une forme visuelle de tableau ordonné.

Exemple de code:

image

Canvas

Voir l'API <ftxui/dom/canvas.hpp>

auto c = Canvas(100, 100);
c.DrawPointLine(10, 10, 80, 10, Color::Red);
auto element = canvas(c);

Le dessin peut être effectué sur un ftxui::Canvas, en utilisant des caractères braille, des blocs ou de simples caractères :

Exemple simple :

image

Exemple complexe :

ezgif com-gif-maker (3)