FTXUI 6.1.9
C++ functional terminal UI.
Loading...
Searching...
No Matches
elements.hpp
Go to the documentation of this file.
1// Copyright 2020 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_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 es una enumeración que representa los diferentes estilos
28/// de bordes que se pueden aplicar a los elementos en la interfaz de usuario de la terminal.
29///
30/// BorderStyle es una enumeración que representa los diferentes estilos de
31/// bordes que se pueden aplicar a los elementos en la interfaz de usuario de la terminal.
32/// Se utiliza para definir la apariencia visual de los bordes alrededor de los elementos,
33/// como ventanas, marcos o separadores.
34/// @ingroup dom
43
44// Encadenar elementos en el decorador juntos.
45// Por ejemplo, las siguientes líneas son equivalentes:
46// -> text("ftxui") | bold | underlined
47// -> underlined(bold(text("FTXUI")))
52
53// --- Elemento de Interfaz ---
54Element text(std::string text);
55Element vtext(std::string text);
63Element separator(Pixel);
64Element separatorCharacter(std::string);
66 float right,
67 Color unselected_color,
68 Color selected_color);
70 float down,
71 Color unselected_color,
72 Color selected_color);
89Decorator borderWith(const Pixel&);
91Element spinner(int charset_index, size_t image_index);
92Element paragraph(const std::string& text);
93Element paragraphAlignLeft(const std::string& text);
94Element paragraphAlignRight(const std::string& text);
95Element paragraphAlignCenter(const std::string& text);
96Element paragraphAlignJustify(const std::string& text);
100Element canvas(int width, int height, std::function<void(Canvas&)>);
101Element canvas(std::function<void(Canvas&)>);
102
103// -- Decorador ---
120Decorator focusPosition(int x, int y);
121Decorator focusPositionRelative(float x, float y);
123Decorator hyperlink(std::string link);
124Element hyperlink(std::string link, Element child);
126Decorator selectionColor(Color foreground);
129Decorator selectionStyle(std::function<void(Pixel&)> style);
130
131// --- Diseño ---
132// Conjunto de elementos horizontales, verticales o apilados.
137Element gridbox(std::vector<Elements> lines);
138
139Element hflow(Elements); // Helper: default flexbox with row direction.
140Element vflow(Elements); // Helper: default flexbox with column direction.
141
142// -- Flexibilidad ---
143// Define cómo compartir el espacio restante cuando no todo se utiliza dentro de un
144// contenedor.
145Element flex(Element); // Expandir/Minimizar si es posible/necesario.
146Element flex_grow(Element); // Expandir elemento si es posible.
147Element flex_shrink(Element); // Minimizar elemento si es necesario.
148
149Element xflex(Element); // Expandir/Minimizar si es posible/necesario en el eje X.
150Element xflex_grow(Element); // Expandir elemento si es posible en el eje X.
151Element xflex_shrink(Element); // Minimizar elemento si es necesario en el eje X.
152
153Element yflex(Element); // Expandir/Minimizar si es posible/necesario en el eje Y.
154Element yflex_grow(Element); // Expandir elemento si es posible en el eje Y.
155Element yflex_shrink(Element); // Minimizar elemento si es necesario en el eje Y.
156
157Element notflex(Element); // Restablecer el atributo flex.
158Element filler(); // Un elemento expandible en blanco.
159
160// -- Anulación de tamaño;
164
165// --- Marco ---
166// Un marco es un área desplazable. El área interna es potencialmente más grande que
167// la externa. El área interna se desplaza para hacer visible el
168// elemento enfocado.
173Element select(Element e); // Obsoleto - Alias para focus.
174
175// --- Cursor ---
176// Son similares a `focus`, pero también cambian la forma del cursor.
183
184// --- Varios ---
187Decorator reflect(Box& box);
188// Antes de dibujar el |element|, borra el píxel de abajo. Esto es útil en
189// combinación con dbox.
191
192// --- Utilidad --------------------------------------------------------------------
197Element nothing(Element element);
198
199namespace Dimension {
200Dimensions Fit(Element&, bool extend_beyond_screen = false);
201} // namespace Dimension
202
203} // namespace ftxui
204
205// Hace que el contenedor pueda tomar cualquier número de hijos como entrada.
206#include "ftxui/dom/take_any_args.hpp"
207
208// Incluir definiciones antiguas usando wstring.
210#endif // FTXUI_DOM_ELEMENTS_HPP
Un adaptador. Posee o referencia un objeto inmutable.
Definition ref.hpp:17
Decorator bgcolor(Color)
Decora usando un color de fondo.
Element window(Element title, Element content, BorderStyle border=ROUNDED)
Draw window with a title and a border around the element.
Element borderDouble(Element)
Draw a double border around the element.
Element focusCursorBarBlinking(Element)
Igual que focus, pero establece la forma del cursor como una barra parpadeante.
Definition frame.cpp:189
Element xflex(Element)
Expandir/Minimizar si es posible/necesario en el eje X.
Definition flex.cpp:129
Element gaugeDirection(float progress, Direction direction)
Dibuja una barra de progreso de alta definición que avanza en la dirección especificada.
Decorator focusPositionRelative(float x, float y)
Utilizado dentro de un frame, esto fuerza que la vista se desplace hacia una posición determinada....
Element separatorStyled(BorderStyle)
Dibuja una separación vertical u horizontal entre otros dos elementos.
Element xflex_grow(Element)
Expandir si es posible en el eje X.
Definition flex.cpp:147
Element underlinedDouble(Element)
Aplica un doble subrayado al texto.
Element clear_under(Element element)
Antes de dibujar |child|, limpia los píxeles de abajo. Esto es útil en combinación con dbox.
Element borderDashed(Element)
Draw a dashed border around the element.
Element separatorEmpty()
Dibuja una separación vertical u horizontal entre otros dos elementos, usando el estilo VACÍO.
Element vscroll_indicator(Element)
Muestra una barra de desplazamiento vertical a la derecha. Los colores siguen el contenido.
Element nothing(Element element)
Una decoración que no hace absolutamente nada.
Definition dom/util.cpp:28
Decorator size(WidthOrHeight, Constraint, int value)
Aplica una restricción al tamaño de un elemento.
Direction
Direction es una enumeración que representa las cuatro cardinales direcciones.
Definition direction.hpp:13
Element flex(Element)
Hace que un elemento hijo se expanda proporcionalmente al espacio restante en un contenedor.
Definition flex.cpp:123
Element paragraphAlignRight(const std::string &text)
Devuelve un elemento que dibuja el párrafo en varias líneas, alineado a la derecha.
Element gaugeRight(float progress)
Dibuja una barra de progreso de alta definición que avanza de izquierda a derecha.
Element focusCursorUnderlineBlinking(Element)
Igual que focus, pero establece la forma del cursor como un subrayado parpadeante.
Definition frame.cpp:217
Element bold(Element)
Utiliza una fuente en negrita, para elementos con más énfasis.
Definition bold.cpp:33
Element separatorLight()
Dibuja una separación vertical u horizontal entre otros dos elementos, usando el estilo LIGERO.
Element spinner(int charset_index, size_t image_index)
Útil para representar el efecto del tiempo y/o eventos. Esto muestra un "video" de arte ASCII.
Element borderRounded(Element)
Draw a rounded border around the element.
Element emptyElement()
Definition dom/util.cpp:140
Element yflex(Element)
Expandir/Minimizar si es posible/necesario en el eje Y.
Definition flex.cpp:135
Element flex_shrink(Element)
Minimizar si es necesario.
Definition flex.cpp:159
Element focusCursorBar(Element)
Igual que focus, pero establece la forma del cursor como un bloque fijo.
Definition frame.cpp:175
Element focusCursorBlock(Element)
Igual que focus, pero establece la forma del cursor como un bloque fijo.
Definition frame.cpp:147
Element underlined(Element)
Subraya el elemento dado.
Element center(Element)
Centra un elemento horizontal y verticalmente.
Element focusCursorUnderline(Element)
Igual que focus, pero establece la forma del cursor como un subrayado fijo.
Definition frame.cpp:203
Element borderHeavy(Element)
Draw a heavy border around the element.
Element inverted(Element)
Agrega un filtro que invertirá los colores de primer plano y de fondo. colores.
Definition inverted.cpp:34
Element paragraphAlignCenter(const std::string &text)
Devuelve un elemento que dibuja el párrafo en varias líneas, alineado al centro.
Element gaugeUp(float progress)
Dibuja una barra de progreso de alta definición que avanza de abajo hacia arriba.
Element text(std::wstring text)
Muestra un fragmento de texto Unicode.
Definition text.cpp:160
Element align_right(Element)
Alinea un elemento a la derecha.
Decorator focusPosition(int x, int y)
Utilizado dentro de un frame, esto fuerza que la vista se desplace hacia una posición determinada....
Element yflex_grow(Element)
Expandir si es posible en el eje Y.
Definition flex.cpp:153
Element hscroll_indicator(Element)
Muestra una barra de desplazamiento horizontal en la parte inferior. Los colores siguen el contenido.
Element flex_grow(Element)
Expandir si es posible.
Definition flex.cpp:141
Element separatorDashed()
Dibuja una separación vertical u horizontal entre otros dos elementos, usando el estilo DISCONTINUO.
Element notflex(Element)
Hace que el elemento no sea flexible.
Definition flex.cpp:177
Element strikethrough(Element)
Aplica un tachado al texto.
Element italic(Element)
Aplica un subrayado doble al texto.
Definition italic.cpp:17
Element dbox(Elements)
Apila varios elementos uno encima del otro.
Element xflex_shrink(Element)
Minimizar si es necesario en el eje X.
Definition flex.cpp:165
Element gaugeLeft(float progress)
Dibuja una barra de progreso de alta definición que avanza de derecha a izquierda.
Element separatorCharacter(std::string)
Dibuja una separación vertical u horizontal entre otros dos elementos.
Element vtext(std::wstring text)
Muestra un fragmento de texto Unicode verticalmente.
Definition text.cpp:220
Element borderLight(Element)
Draw a light border around the element.
Element focus(Element)
Establece que child sea el elemento enfocado entre sus hermanos.
Definition frame.cpp:101
Element paragraphAlignLeft(const std::string &text)
Devuelve un elemento que dibuja el párrafo en varias líneas, alineado a la izquierda.
Decorator borderWith(const Pixel &)
Same as border but with a constant Pixel around the element.
Decorator borderStyled(BorderStyle)
Same as border but with different styles.
Element separator()
Dibuja una separación vertical u horizontal entre otros dos elementos.
Element filler()
Un elemento que se expandirá proporcionalmente al espacio restante en un contenedor.
Definition flex.cpp:98
Element dim(Element)
Usa una fuente clara para elementos con menos énfasis.
Definition dim.cpp:33
Element automerge(Element child)
Permite que los caracteres se fusionen automáticamente con otros cercanos.
Definition automerge.cpp:17
Decorator hyperlink(std::string link)
Decora usando un hipervínculo. El enlace se abrirá cuando el usuario haga clic en él....
Definition hyperlink.cpp:70
Element blink(Element)
El texto dibujado alterna entre visible y oculto.
Definition blink.cpp:33
Element vcenter(Element)
Centra un elemento verticalmente.
Element separatorDouble()
Dibuja una separación vertical u horizontal entre otros dos elementos, usando el estilo DOBLE.
Element focusCursorBlockBlinking(Element)
Igual que focus, pero establece la forma del cursor como un bloque parpadeante.
Definition frame.cpp:161
Element gauge(float progress)
Dibuja una barra de progreso de alta definición.
Element paragraphAlignJustify(const std::string &text)
Devuelve un elemento que dibuja el párrafo en varias líneas, alineado utilizando una alineación justi...
Element border(Element)
Draw a border around the element.
Element separatorHeavy()
Dibuja una separación vertical u horizontal entre otros dos elementos, usando el estilo GRUESO.
Element borderEmpty(Element)
Draw an empty border around the element.
Decorator color(Color)
Decora usando un color de primer plano.
Element yflex_shrink(Element)
Minimizar si es necesario en el eje Y.
Definition flex.cpp:171
Element hcenter(Element)
Centra un elemento horizontalmente.
BorderStyle
BorderStyle es una enumeración que representa los diferentes estilos de bordes que se pueden aplicar ...
Definition elements.hpp:35
Element gaugeDown(float progress)
Dibuja una barra de progreso de alta definición que avanza de arriba hacia abajo.
@ 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 es un búfer dibujable asociado con operaciones de dibujo.
Definition canvas.hpp:38
FlexboxConfig es una estructura de configuración que define las propiedades de diseño para un contene...
Una clase que representa la configuración para el efecto de color de gradiente lineal.
Color es una clase que representa un color en la interfaz de usuario de la terminal.
Definition color.hpp:21
Dimensions es una estructura que representa el tamaño de la terminal.
Definition terminal.hpp:11
Un carácter Unicode y su estilo asociado.
Definition pixel.hpp:15
std::string title
float progress
El espacio de nombres ftxui::Dimension:: de FTXUI.
Dimensions Fit(Element &, bool extend_beyond_screen=false)
El espacio de nombres ftxui:: de FTXUI.
Definition animation.hpp:10
WidthOrHeight
Definition elements.hpp:161
std::function< Element(Element)> Decorator
Definition elements.hpp:24
Element flexbox(Elements, FlexboxConfig config=FlexboxConfig())
Un contenedor que muestra elementos en filas/columnas y es capaz de ajustarse a la siguiente columna/...
Definition flexbox.cpp:251
Element separatorVSelector(float up, float down, Color unselected_color, Color selected_color)
Dibuja una barra vertical, con el área entre arriba/abajo coloreada de forma diferente.
std::shared_ptr< Node > Element
Definition elements.hpp:22
Element xframe(Element)
Igual que frame, pero solo en el eje x.
Definition frame.cpp:126
Element hflow(Elements)
Un contenedor que muestra elementos en filas de izquierda a derecha. Cuando está lleno,...
Definition flexbox.cpp:269
Decorator selectionStyle(std::function< void(Pixel &)> style)
Establece el estilo de un elemento cuando está seleccionado.
Element separatorHSelector(float left, float right, Color unselected_color, Color selected_color)
Dibuja una barra horizontal, con el área entre izquierda/derecha coloreada de forma diferente.
Element hbox(Elements)
Un contenedor que muestra elementos horizontalmente uno por uno.
Definition hbox.cpp:94
std::vector< Element > Elements
Definition elements.hpp:23
Decorator selectionForegroundColor(Color foreground)
Establece el color de primer plano de un elemento cuando está seleccionado. Tenga en cuenta que el es...
Component operator|(Component component, ComponentDecorator decorator)
Decorator selectionBackgroundColor(Color foreground)
Establece el color de fondo de un elemento cuando está seleccionado. Tenga en cuenta que el estilo se...
Element yframe(Element)
Igual que frame, pero solo en el eje y.
Definition frame.cpp:134
Element vbox(Elements)
Decorator selectionColor(Color foreground)
Establece el color de un elemento cuando está seleccionado.
Element select(Element e)
Establece que child sea el elemento enfocado entre sus hermanos.
Definition frame.cpp:108
Element selectionStyleReset(Element)
Restablece el estilo de selección de un elemento.
Element canvas(ConstRef< Canvas >)
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 contenedor que muestra una cuadrícula de elementos.
Elements paragraph(std::wstring text)
Element frame(Element)
Permite que un elemento se muestre dentro de un área 'virtual'. Su tamaño puede ser mayor que su cont...
Definition frame.cpp:118
Component & operator|=(Component &component, ComponentDecorator decorator)
@ LESS_THAN
Definition elements.hpp:162
@ GREATER_THAN
Definition elements.hpp:162
Element vflow(Elements)
Un contenedor que muestra elementos en filas de arriba a abajo. Cuando está lleno,...
Definition flexbox.cpp:287
Element graph(GraphFunction)
Dibuja un gráfico usando una GraphFunction.
std::uint8_t left
Definition screen.cpp:130
std::uint8_t down
Definition screen.cpp:133
std::uint8_t right
Definition screen.cpp:132