FTXUI 6.1.9
C++ functional terminal UI.
Chargement...
Recherche...
Aucune correspondance
elements.hpp
Aller à la documentation de ce fichier.
1// Copyright 2020 Arthur Sonzogni. Tous droits réservés.
2// L'utilisation de ce code source est régie par la licence MIT que l'on peut trouver dans
3// le fichier LICENSE.
4#ifndef FTXUI_DOM_ELEMENTS_HPP
5#define FTXUI_DOM_ELEMENTS_HPP
6
7#include <functional>
8#include <memory>
9
10#include "ftxui/dom/canvas.hpp"
14#include "ftxui/dom/node.hpp"
15#include "ftxui/screen/box.hpp"
18#include "ftxui/util/ref.hpp"
19
20namespace ftxui {
21class Node;
22using Element = std::shared_ptr<Node>;
23using Elements = std::vector<Element>;
24using Decorator = std::function<Element(Element)>;
25using GraphFunction = std::function<std::vector<int>(int, int)>;
26
27/// @brief BorderStyle est une énumération qui représente les différents styles
28/// de bordures pouvant être appliqués aux éléments de l'interface utilisateur du terminal.
29///
30/// BorderStyle est une énumération qui représente les différents styles de
31/// bordures pouvant être appliqués aux éléments de l'interface utilisateur du terminal.
32/// Il est utilisé pour définir l'apparence visuelle des bordures autour des éléments,
33/// tels que les fenêtres, les cadres ou les séparateurs.
34/// @ingroup dom
43
44// Enchaîner des éléments dans un décorateur.
45// Par exemple, les lignes suivantes sont équivalentes :
46// -> text("ftxui") | bold | underlined
47// -> underlined(bold(text("FTXUI")))Element operator|(Element, Decorator);
51
52// --- Composant ---
53Element text(std::string text);
54Element vtext(std::string text);
62Element separator(Pixel);
63Element separatorCharacter(std::string);
65 float right,
66 Color unselected_color,
67 Color selected_color);
69 float down,
70 Color unselected_color,
71 Color selected_color);
72Element gauge(float progress);
73Element gaugeLeft(float progress);
74Element gaugeRight(float progress);
75Element gaugeUp(float progress);
76Element gaugeDown(float progress);
77Element gaugeDirection(float progress, Direction direction);
89Element window(Element title, Element content, BorderStyle border = ROUNDED);
90Element spinner(int charset_index, size_t image_index);
91Element paragraph(const std::string& text);
92Element paragraphAlignLeft(const std::string& text);
93Element paragraphAlignRight(const std::string& text);
94Element paragraphAlignCenter(const std::string& text);
95Element paragraphAlignJustify(const std::string& text);
99Element canvas(int width, int height, std::function<void(Canvas&)>);
100Element canvas(std::function<void(Canvas&)>);
101
102// -- Décorateur ---
119Decorator focusPosition(int x, int y);
120Decorator focusPositionRelative(float x, float y);
122Decorator hyperlink(std::string link);
123Element hyperlink(std::string link, Element child);
125Decorator selectionColor(Color foreground);
128Decorator selectionStyle(std::function<void(Pixel&)> style);
129
130// --- Disposition ---
131// Horizontal, Vertical ou empilé d'éléments.
136Element gridbox(std::vector<Elements> lines);
137
138Element hflow(Elements); // Aide : flexbox par défaut avec direction de ligne.
139Element vflow(Elements); // Aide : flexbox par défaut avec direction de colonne.
140
141// -- Flexibilité ---
142// Définit comment partager l'espace restant lorsque tout n'est pas utilisé à l'intérieur d'un
143// conteneur.
144Element flex(Element); // Développer/Réduire si possible/nécessaire.
145Element flex_grow(Element); // Développer l'élément si possible.
146Element flex_shrink(Element); // Réduire l'élément si nécessaire.
147
148Element xflex(Element); // Développer/Réduire si possible/nécessaire sur l'axe X.
149Element xflex_grow(Element); // Développer l'élément si possible sur l'axe X.
150Element xflex_shrink(Element); // Réduire l'élément si nécessaire sur l'axe X.
151
152Element yflex(Element); // Développer/Réduire si possible/nécessaire sur l'axe Y.
153Element yflex_grow(Element); // Développer l'élément si possible sur l'axe Y.
154Element yflex_shrink(Element); // Réduire l'élément si nécessaire sur l'axe Y.
155
156Element notflex(Element); // Réinitialiser l'attribut flex.
157Element filler(); // Un élément vide extensible.
158
159// -- Surcharger la taille ---
163
164// --- Cadre ---
165// Un cadre est une zone défilante. La zone interne est potentiellement plus grande que
166// la zone externe. La zone interne est défilée afin de rendre visible l'élément focalisé.
171Element select(Element e); // Obsolète - Alias pour focus.
172
173// --- Curseur ---
174// Ceux-ci sont similaires à `focus`, mais changent également la forme du curseur.
181
182// --- Divers ---
185Decorator reflect(Box& box);
186// Avant de dessiner l'|element|, effacez le pixel en dessous. Ceci est utile en
187// combinaison avec dbox.
189
190// --- Utilitaire --------------------------------------------------------------------
195Element nothing(Element element);
196
197namespace Dimension {
198Dimensions Fit(Element&, bool extend_beyond_screen = false);
199} // namespace Dimension
200
201} // namespace ftxui
202
203// Rendre le conteneur capable de prendre n'importe quel nombre d'enfants en entrée.
204#include "ftxui/dom/take_any_args.hpp"
205
206// Inclure les anciennes définitions utilisant wstring.
208#endif // FTXUI_DOM_ELEMENTS_HPP
Un adaptateur. Possède ou référence un objet immuable.
Definition ref.hpp:17
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 text(std::wstring text)
Affiche un morceau de texte unicode.
Definition text.cpp:160
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.
Decorator color(Color)
Décore en utilisant une couleur de premier plan.
Element yflex_shrink(Element)
Minimiser si nécessaire sur l'axe Y.
Definition flex.cpp:171
Element hcenter(Element)
Centre un élément horizontalement.
Element vbox(Elements)
Un conteneur affichant les éléments verticalement un par un.
Definition vbox.cpp:96
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
Canvas est un tampon dessinable associé aux opérations de dessin.
Definition canvas.hpp:38
FlexboxConfig est une structure de configuration qui définit les propriétés de mise en page pour un c...
Une classe représentant les paramètres de l'effet de couleur en dégradé linéaire.
Color est une classe qui représente une couleur dans l'interface utilisateur du terminal.
Definition color.hpp:21
Dimensions est une structure qui représente la taille du terminal.
Definition terminal.hpp:11
Un caractère Unicode et son style associé.
Definition pixel.hpp:15
L'espace de noms FTXUI ftxui::Dimension::
Dimensions Fit(Element &, bool extend_beyond_screen=false)
L'espace de noms FTXUI ftxui::
Definition animation.hpp:10
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 gauge(float progress)
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)