22 int direction_index = 0;
24 int justify_content_index = 0;
25 int align_items_index = 0;
26 int align_content_index = 0;
28 std::vector<std::string> directions = {
35 std::vector<std::string> wraps = {
41 std::vector<std::string> justify_content = {
42 "FlexStart",
"FlexEnd",
"Center",
"Stretch",
43 "SpaceBetween",
"SpaceAround",
"SpaceEvenly",
46 std::vector<std::string> align_items = {
53 std::vector<std::string> align_content = {
54 "FlexStart",
"FlexEnd",
"Center",
"Stretch",
55 "SpaceBetween",
"SpaceAround",
"SpaceEvenly",
58 auto radiobox_direction =
Radiobox(&directions, &direction_index);
59 auto radiobox_wrap =
Radiobox(&wraps, &wrap_index);
60 auto radiobox_justify_content =
61 Radiobox(&justify_content, &justify_content_index);
62 auto radiobox_align_items =
Radiobox(&align_items, &align_items_index);
63 auto radiobox_align_content =
Radiobox(&align_content, &align_content_index);
65 bool element_xflex_grow =
false;
66 bool element_yflex_grow =
false;
67 bool group_xflex_grow =
true;
68 bool group_yflex_grow =
true;
69 auto checkbox_element_xflex_grow =
70 Checkbox(
"element |= xflex_grow", &element_xflex_grow);
71 auto checkbox_element_yflex_grow =
72 Checkbox(
"element |= yflex_grow", &element_yflex_grow);
73 auto checkbox_group_xflex_grow =
74 Checkbox(
"group |= xflex_grow", &group_xflex_grow);
75 auto checkbox_group_yflex_grow =
76 Checkbox(
"group |= yflex_grow", &group_yflex_grow);
78 auto make_box = [&](
size_t dimx,
size_t dimy,
size_t index) {
79 std::string title = std::to_string(dimx) +
"x" + std::to_string(dimy);
80 auto element =
window(
text(title) | hcenter | bold,
81 text(std::to_string(index)) | hcenter | dim) |
85 if (element_xflex_grow) {
88 if (element_yflex_grow) {
94 auto content_renderer =
Renderer([&] {
124 if (!group_xflex_grow) {
127 if (!group_yflex_grow) {
131 group = group |
flex;
138 int space_right = 10;
139 int space_bottom = 1;
142 content_renderer, &space_right);
145 content_renderer, &space_bottom);
147 auto main_container = Container::Vertical({
148 Container::Horizontal({
151 Container::Vertical({
152 checkbox_element_xflex_grow,
153 checkbox_element_yflex_grow,
154 checkbox_group_xflex_grow,
155 checkbox_group_yflex_grow,
158 Container::Horizontal({
159 radiobox_justify_content,
160 radiobox_align_items,
161 radiobox_align_content,
166 auto main_renderer =
Renderer(main_container, [&] {
170 radiobox_direction->
Render()),
174 checkbox_element_xflex_grow->Render(),
175 checkbox_element_yflex_grow->Render(),
176 checkbox_group_xflex_grow->Render(),
177 checkbox_group_yflex_grow->Render(),
182 radiobox_justify_content->
Render()),
184 radiobox_align_items->
Render()),
186 radiobox_align_content->
Render()),
188 content_renderer->Render() | flex |
border,
192 screen.Loop(main_renderer);
Element make_box(int x, int y)
static ScreenInteractive Fullscreen()
Component Radiobox(RadioboxOption options)
Une liste d'éléments, où un seul peut être sélectionné.
Component Renderer(Component child, std::function< Element()>)
Renvoie un nouveau composant, similaire à |child|, mais utilisant |render| comme événement Component:...
Component ResizableSplitRight(Component main, Component back, int *main_size)
Une séparation horizontale entre deux composants, configurable à l'aide de la souris.
Component ResizableSplitBottom(Component main, Component back, int *main_size)
Une séparation verticale entre deux composants, configurable à l'aide de la souris.
Component Checkbox(CheckboxOption options)
Dessine un élément à cocher.
virtual void Render(Screen &screen)
AlignContent align_content
@ Center
Les éléments sont centrés le long de l'axe transversal.
JustifyContent justify_content
@ Center
Les éléments sont centrés le long de la ligne.
FlexboxConfig & Set(FlexboxConfig::Direction)
Définit la direction de la flexbox.
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 xflex_grow(Element)
S'étend si possible sur l'axe X.
Decorator size(WidthOrHeight, Constraint, int value)
Applique une contrainte sur la taille d'un élément.
Element flex(Element)
Permet à un élément enfant de s'étendre proportionnellement à l'espace restant dans un conteneur.
Element center(Element)
Centre un élément horizontalement et verticalement.
Element text(std::wstring text)
Affiche un morceau de texte unicode.
Element yflex_grow(Element)
S'étend si possible sur l'axe Y.
Element notflex(Element)
Rend l'élément non flexible.
Element filler()
Un élément qui occupera proportionnellement l'espace disponible dans un conteneur.
Element border(Element)
Dessine une bordure autour de l'élément.
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.
FlexboxConfig est une structure de configuration qui définit les propriétés de mise en page pour un c...
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.
L'espace de noms FTXUI ftxui::
Element flexbox(Elements, FlexboxConfig config=FlexboxConfig())
Un conteneur affichant des éléments sur des lignes/colonnes et capable de passer à la colonne/ligne s...
Element hbox(Elements)
Un conteneur affichant les éléments horizontalement un par un.