FTXUI 6.1.9
C++ functional terminal UI.
Chargement...
Recherche...
Aucune correspondance
flexbox_config.hpp
Aller à la documentation de ce fichier.
1// Copyright 2021 Arthur Sonzogni. All rights reserved.
2// Use of this source code is governed by the MIT license that can be found in
3// the LICENSE file.
4#ifndef FTXUI_DOM_FLEXBOX_CONFIG_HPP
5#define FTXUI_DOM_FLEXBOX_CONFIG_HPP
6
7/*
8 Ceci reproduit le modèle CSS flexbox.
9 Voir le guide pour la documentation :
10 https://css-tricks.com/snippets/css/a-guide-to-flexbox/
11*/
12
13namespace ftxui {
14
15/// @brief FlexboxConfig est une structure de configuration qui définit les
16/// propriétés de mise en page pour un conteneur flexbox.
17//
18/// Elle vous permet de spécifier la direction des éléments flexibles, s'ils
19/// doivent s'enrouler, comment ils doivent être justifiés le long de l'axe
20/// principal, et comment ils doivent être alignés le long de l'axe transversal.
21/// Elle inclut également des propriétés pour les espacements entre les
22/// éléments flexibles dans les deux axes principal et transversal.
23/// Cette structure est utilisée pour configurer le comportement de la mise en
24/// page des conteneurs flexbox dans une interface utilisateur de terminal.
25///
26/// @ingroup dom
28 /// Ceci établit l'axe principal, définissant ainsi la direction dans laquelle
29 /// les éléments flexibles sont placés dans le conteneur flex. Flexbox est (à
30 /// part l'enveloppement) un concept de mise en page unidirectionnel. Pensez
31 /// aux éléments flexibles comme étant principalement disposés en rangées
32 /// horizontales ou en colonnes verticales.
33 enum class Direction {
34 Row, ///< Les éléments flexibles sont disposés en ligne.
35 RowInversed, ///< Les éléments flexibles sont disposés en ligne, mais en
36 ///< ordre inverse.
37 Column, ///< Les éléments flexibles sont disposés en colonne.
38 ColumnInversed ///< Les éléments flexibles sont disposés en colonne, mais
39 ///< en ordre inverse.
40 };
42
43 /// Par défaut, tous les éléments flexibles tenteront de tenir sur une seule
44 /// ligne. Vous pouvez modifier cela et permettre aux éléments de s'enrouler
45 /// si nécessaire avec cette propriété.
46 enum class Wrap {
47 NoWrap, ///< Tous les éléments flexibles tenteront de tenir sur une
48 ///< seule ligne.
49 Wrap, ///< Les éléments flexibles s'enrouleront sur plusieurs
50 ///< lignes.
51 WrapInversed, ///< Les éléments flexibles s'enrouleront sur plusieurs
52 ///< lignes, mais en ordre inverse.
53 };
55
56 /// Ceci définit l'alignement le long de l'axe principal. Il aide à distribuer
57 /// l'espace libre supplémentaire restant lorsque tous les éléments flexibles
58 /// sur une ligne sont inflexibles, ou sont flexibles mais ont atteint leur
59 /// taille maximale. Il exerce également un certain contrôle sur l'alignement
60 /// des éléments lorsqu'ils débordent de la ligne.
61 enum class JustifyContent {
62 /// Les éléments sont alignés au début de la direction du flexbox.
64 /// Les éléments sont alignés à la fin de la direction du flexbox.
65 FlexEnd,
66 /// Les éléments sont centrés le long de la ligne.
67 Center,
68 /// Les éléments sont étirés pour remplir la ligne.
69 Stretch,
70 /// Les éléments sont répartis uniformément sur la ligne ; le premier
71 /// élément est sur la ligne de début, le dernier élément sur la ligne de fin.
73 /// Les éléments sont répartis uniformément sur la ligne avec un espace égal
74 /// autour d'eux. Notez que visuellement les espaces ne sont pas égaux, car
75 /// tous les éléments ont un espace égal des deux côtés. Le premier élément
76 /// aura une unité d'espace contre le bord du conteneur, mais deux unités
77 /// d'espace entre le prochain élément car cet élément a son propre
78 /// espacement qui s'applique.
80 /// Les éléments sont répartis de sorte que l'espacement entre deux éléments
81 /// (et l'espace jusqu'aux bords) soit égal.
83 };
85
86 /// Ceci définit le comportement par défaut de la disposition des éléments
87 /// flexibles le long de l'axe transversal sur la ligne actuelle. Considérez-le
88 /// comme la version de justify-content pour l'axe transversal
89 /// (perpendiculaire à l'axe principal).
90 enum class AlignItems {
91 FlexStart, ///< Les éléments sont placés au début de l'axe transversal.
92 FlexEnd, ///< Les éléments sont placés à la fin de l'axe transversal.
93 Center, ///< Les éléments sont centrés le long de l'axe transversal.
94 Stretch, ///< Les éléments sont étirés pour remplir l'axe transversal.
95 };
97
98 // Ceci aligne les lignes d'un conteneur flex lorsqu'il y a un espace
99 // supplémentaire dans l'axe transversal, de manière similaire à la façon dont
100 // justify-content aligne les éléments individuels dans l'axe principal.
101 enum class AlignContent {
102 FlexStart, ///< Les éléments sont placés au début de l'axe transversal.
103 FlexEnd, ///< Les éléments sont placés à la fin de l'axe transversal.
104 Center, ///< Les éléments sont centrés le long de l'axe transversal.
105 Stretch, ///< Les éléments sont étirés pour remplir l'axe transversal.
106 SpaceBetween, ///< Les éléments sont répartis uniformément dans l'axe
107 ///< transversal.
108 SpaceAround, ///< Les éléments sont répartis uniformément avec un espace
109 ///< égal autour de chaque ligne.
110 SpaceEvenly, ///< Les éléments sont répartis uniformément dans l'axe
111 ///< transversal avec un espace égal autour d'eux.
112 };
114
115 int gap_x = 0;
116 int gap_y = 0;
117
118 // Modèle de constructeur. Pour une utilisation chaînée comme :
119 // ```
120 // FlexboxConfig()
121 // .Set(FlexboxConfig::Direction::Row)
122 // .Set(FlexboxConfig::Wrap::Wrap);
123 // ```
129 FlexboxConfig& SetGap(int gap_x, int gap_y);
130};
131
132} // namespace ftxui
133
134#endif // FTXUI_DOM_FLEXBOX_CONFIG_HPP
@ FlexStart
Les éléments sont placés au début de l'axe transversal.
@ Column
Les éléments flexibles sont disposés en colonne.
@ Row
Les éléments flexibles sont disposés en ligne.
@ FlexStart
Les éléments sont placés au début de l'axe transversal.
FlexboxConfig & SetGap(int gap_x, int gap_y)
Définit la direction de flex (flex direction) de la flexbox.
JustifyContent justify_content
@ Center
Les éléments sont centrés le long de la ligne.
@ FlexStart
Les éléments sont alignés au début de la direction du flexbox.
@ FlexEnd
Les éléments sont alignés à la fin de la direction du flexbox.
@ Stretch
Les éléments sont étirés pour remplir la ligne.
FlexboxConfig & Set(FlexboxConfig::Direction)
Définit la direction de la flexbox.
FlexboxConfig est une structure de configuration qui définit les propriétés de mise en page pour un c...
L'espace de noms FTXUI ftxui::
Definition animation.hpp:10