FTXUI 6.1.9
C++ functional terminal UI.
Loading...
Searching...
No Matches
node.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_NODE_HPP
5#define FTXUI_DOM_NODE_HPP
6
7#include <memory> // for shared_ptr
8#include <vector> // for vector
9
10#include "ftxui/dom/requirement.hpp" // for Requirement
11#include "ftxui/dom/selection.hpp" // for Selection
12#include "ftxui/screen/box.hpp" // for Box
14
15namespace ftxui {
16
17class Node;
18class Screen;
19
20using Element = std::shared_ptr<Node>;
21using Elements = std::vector<Element>;
22
23/// @brief Node es la clase base para todos los elementos en el árbol DOM.
24///
25/// Representa un único nodo en el modelo de objeto de documento (DOM) y proporciona
26/// la estructura básica para el diseño y la representación.
27/// Contiene métodos para calcular los requisitos de diseño, establecer las
28/// dimensiones del cuadro, seleccionar contenido, renderizar en la pantalla y
29/// verificar el estado del diseño.
30/// Típicamente contiene elementos hijos, que también son instancias de Node.
31///
32/// Se espera que los usuarios deriven de esta clase para crear elementos personalizados.
33///
34/// Una lista de elementos incorporados se puede encontrar en el archivo `elements.hpp`.
35///
36/// @ingroup dom
37class Node {
38 public:
40 explicit Node(Elements children);
41 Node(const Node&) = delete;
42 Node(const Node&&) = delete;
43 Node& operator=(const Node&) = delete;
44 Node& operator=(const Node&&) = delete;
45
46 virtual ~Node();
47
48 // Paso 1: Calcular los requisitos de diseño. Indicar al padre qué dimensiones
49 // desea tener este elemento.
50 // Propagado de Hijos a Padres.
51 virtual void ComputeRequirement();
53
54 // Paso 2: Asignar a este elemento sus dimensiones finales.
55 // Propagado de Padres a Hijos.
56 virtual void SetBox(Box box);
57
58 // Paso 3: (opcional) Selección
59 // Propagado de Padres a Hijos.
60 virtual void Select(Selection& selection);
61
62 // Paso 4: Dibujar este elemento.
63 virtual void Render(Screen& screen);
64
65 virtual std::string GetSelectedContent(Selection& selection);
66
67 // El diseño puede no resolverse en una sola iteración para algunos elementos. Esto
68 // les permite solicitar iteraciones adicionales. Esta señal debe ser
69 // reenviada a los hijos al menos una vez.
70 struct Status {
71 int iteration = 0;
72 bool need_iteration = false;
73 };
74 virtual void Check(Status* status);
75
76 friend void Render(Screen& screen, Node* node, Selection& selection);
77
78 protected:
82};
83
84void Render(Screen& screen, const Element& element);
85void Render(Screen& screen, Node* node);
86void Render(Screen& screen, Node* node, Selection& selection);
88 Node* node,
89 Selection& selection);
90
91} // namespace ftxui
92
93#endif // FTXUI_DOM_NODE_HPP
auto screen
virtual void Select(Selection &selection)
Calcula la selección de un elemento.
Definition node.cpp:46
Elements children_
Definition node.hpp:79
virtual std::string GetSelectedContent(Selection &selection)
Definition node.cpp:72
virtual void SetBox(Box box)
Asigna una posición y una dimensión a un elemento para dibujarlo.
Definition node.cpp:41
Requirement requirement_
Definition node.hpp:80
Requirement requirement()
Definition node.hpp:52
virtual void ComputeRequirement()
Calcula cuánto espacio necesita un elemento.
Definition node.cpp:20
virtual void Check(Status *status)
Definition node.cpp:65
virtual ~Node()
Node & operator=(const Node &)=delete
Node(const Node &)=delete
Box box_
Definition node.hpp:81
friend void Render(Screen &screen, Node *node, Selection &selection)
Definition node.cpp:96
Node & operator=(const Node &&)=delete
Node(const Node &&)=delete
Node es la clase base para todos los elementos en el árbol DOM.
Definition node.hpp:37
Representa una selección en una interfaz de usuario de terminal.
Definition selection.hpp:22
void Render(Screen &screen, const Element &element)
Muestra un elemento en un ftxui::Screen.
Definition node.cpp:84
Requirement es una estructura que define los requisitos de diseño para un Nodo en la interfaz de usua...
Una cuadrícula rectangular de píxeles.
Definition screen.hpp:26
Box es una estructura que representa un área rectangular en un espacio 2D.
Definition box.hpp:16
El espacio de nombres ftxui:: de FTXUI.
Definition animation.hpp:10
std::string GetNodeSelectedContent(Screen &screen, Node *node, Selection &selection)
Definition node.cpp:168
std::shared_ptr< Node > Element
Definition elements.hpp:22
std::vector< Element > Elements
Definition elements.hpp:23