FTXUI 6.1.9
C++ functional terminal UI.
Loading...
Searching...
No Matches
flexbox_config.hpp
Go to the documentation of this file.
1// Copyright 2021 Arthur Sonzogni. Todos los derechos reservados.
2// El uso de este código fuente se rige por la licencia MIT que se puede encontrar en
3// el archivo LICENSE.
4#ifndef FTXUI_DOM_FLEXBOX_CONFIG_HPP
5#define FTXUI_DOM_FLEXBOX_CONFIG_HPP
6
7/*
8 Esto replica el modelo flexbox de CSS.
9 Ver guía para la documentación:
10 https://css-tricks.com/snippets/css/a-guide-to-flexbox/
11*/
12
13namespace ftxui {
14
15/// @brief FlexboxConfig es una estructura de configuración que define las
16/// propiedades de diseño para un contenedor flexbox.
17//
18/// Permite especificar la dirección de los elementos flex, si deben
19/// ajustarse (wrap), cómo deben justificarse a lo largo del eje principal y cómo
20/// deben alinearse a lo largo del eje transversal.
21/// También incluye propiedades para los espacios entre los elementos flex en
22/// ambos ejes, principal y transversal.
23/// Esta estructura se utiliza para configurar el comportamiento de diseño de los
24/// contenedores flexbox en una interfaz de usuario de terminal.
25///
26/// @ingroup dom
28 /// Esto establece el eje principal, definiendo así la dirección en la que los
29 /// elementos flex se colocan en el contenedor flex. Flexbox es (aparte del
30 /// ajuste) un concepto de diseño de una sola dirección. Piense en los
31 /// elementos flex como si se dispusieran principalmente en filas
32 /// horizontales o columnas verticales.
33 enum class Direction {
34 Row, ///< Los elementos flex se distribuyen en una fila.
35 RowInversed, ///< Los elementos flex se distribuyen en una fila, pero en orden inverso.
36 Column, ///< Los elementos flex se distribuyen en una columna.
37 ColumnInversed ///< Los elementos flex se distribuyen en una columna, pero en orden
38 ///< inverso.
39 };
41
42 /// Por defecto, todos los elementos flex intentarán ajustarse en una sola línea. Puede
43 /// cambiar eso y permitir que los elementos se ajusten según sea necesario con esta
44 /// propiedad.
45 enum class Wrap {
46 NoWrap, ///< Todos los elementos flex intentarán ajustarse en una sola línea.
47 Wrap, ///< Los elementos flex se ajustarán en varias líneas.
48 WrapInversed, ///< Los elementos flex se ajustarán en varias líneas, pero en orden
49 ///< inverso.
50 };
52
53 /// Esto define la alineación a lo largo del eje principal. Ayuda a distribuir el espacio
54 /// libre sobrante cuando todos los elementos flex en una línea son inflexibles, o
55 /// son flexibles pero han alcanzado su tamaño máximo. También ejerce cierto
56 /// control sobre la alineación de los elementos cuando desbordan la línea.
57 enum class JustifyContent {
58 /// Los elementos se alinean al inicio de la dirección del flexbox.
60 /// Los elementos se alinean al final de la dirección del flexbox.
61 FlexEnd,
62 /// Los elementos se centran a lo largo de la línea.
63 Center,
64 /// Los elementos se estiran para llenar la línea.
65 Stretch,
66 /// Los elementos se distribuyen uniformemente en la línea; el primer elemento está al
67 // inicio de la línea, el último elemento al final de la línea.
69 /// Los elementos se distribuyen uniformemente en la línea con igual espacio a su
70 /// alrededor. Tenga en cuenta que visualmente los espacios no son iguales, ya que
71 /// todos los elementos tienen el mismo espacio en ambos lados. El primer elemento
72 /// tendrá una unidad de espacio contra el borde del contenedor, pero dos unidades
73 /// de espacio entre el siguiente elemento porque ese siguiente elemento tiene su
74 /// propio espaciado que se aplica.
76 /// Los elementos se distribuyen de manera que el espacio entre dos elementos (y el
77 /// espacio a los bordes) sea igual.
79 };
81
82 /// Esto define el comportamiento predeterminado de cómo se disponen los elementos flex
83 /// a lo largo del eje transversal en la línea actual. Piense en ello como la versión
84 /// de justify-content para el eje transversal (perpendicular al eje principal).
85 enum class AlignItems {
86 FlexStart, ///< Los elementos se colocan al inicio del eje transversal.
87 FlexEnd, ///< Los elementos se colocan al final del eje transversal.
88 Center, ///< Los elementos se centran a lo largo del eje transversal.
89 Stretch, ///< Los elementos se estiran para llenar el eje transversal.
90 };
92
93 // Esto alinea las líneas de un contenedor flex cuando hay espacio extra en
94 // el eje transversal, de manera similar a cómo justify-content alinea los elementos
95 // individuales dentro del eje principal.
96 enum class AlignContent {
97 FlexStart, ///< Los elementos se colocan al inicio del eje transversal.
98 FlexEnd, ///< Los elementos se colocan al final del eje transversal.
99 Center, ///< Los elementos se centran a lo largo del eje transversal.
100 Stretch, ///< Los elementos se estiran para llenar el eje transversal.
101 SpaceBetween, ///< Los elementos se distribuyen uniformemente en el eje transversal.
102 SpaceAround, ///< Los elementos se distribuyen uniformemente con igual espacio alrededor de cada
103 ///< línea.
104 SpaceEvenly, ///< Los elementos se distribuyen uniformemente en el eje transversal con igual
105 ///< espacio a su alrededor.
106 };
108
109 int gap_x = 0;
110 int gap_y = 0;
111
112 // Patrón de constructor. Para uso encadenado como:
113 // ```
114 // FlexboxConfig()
115 // .Set(FlexboxConfig::Direction::Row)
116 // .Set(FlexboxConfig::Wrap::Wrap);
117 // ```
123 FlexboxConfig& SetGap(int gap_x, int gap_y);
124};
125
126} // namespace ftxui
127
128#endif // FTXUI_DOM_FLEXBOX_CONFIG_HPP
@ FlexStart
Los elementos se colocan al inicio del eje transversal.
@ Column
Los elementos flex se distribuyen en una columna.
@ Row
Los elementos flex se distribuyen en una fila.
@ RowInversed
Los elementos flex se distribuyen en una fila, pero en orden inverso.
@ NoWrap
Todos los elementos flex intentarán ajustarse en una sola línea.
@ Wrap
Los elementos flex se ajustarán en varias líneas.
@ FlexStart
Los elementos se colocan al inicio del eje transversal.
FlexboxConfig & SetGap(int gap_x, int gap_y)
Establece el espacio (gap) del flexbox.
JustifyContent justify_content
@ Center
Los elementos se centran a lo largo de la línea.
@ FlexStart
Los elementos se alinean al inicio de la dirección del flexbox.
@ FlexEnd
Los elementos se alinean al final de la dirección del flexbox.
@ SpaceBetween
Los elementos se distribuyen uniformemente en la línea; el primer elemento está al.
@ Stretch
Los elementos se estiran para llenar la línea.
FlexboxConfig & Set(FlexboxConfig::Direction)
Establece la dirección del flexbox.
FlexboxConfig es una estructura de configuración que define las propiedades de diseño para un contene...
El espacio de nombres ftxui:: de FTXUI.
Definition animation.hpp:10