FTXUI 6.1.9
C++ functional terminal UI.
Chargement...
Recherche...
Aucune correspondance
node.hpp
Aller à la documentation de ce fichier.
1// Copyright 2020 Arthur Sonzogni. Tous droits réservés.
2// L'utilisation de ce code source est régie par la licence MIT qui se trouve
3// dans le fichier 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 est la classe de base pour tous les éléments de l'arbre DOM.
24///
25/// Il représente un nœud unique dans le modèle d'objet de document (DOM) et fournit
26/// la structure de base pour la mise en page et le rendu.
27/// Il contient des méthodes pour calculer les exigences de mise en page, définir les dimensions
28/// de la boîte, sélectionner le contenu, rendre à l'écran et vérifier l'état de la mise en page.
29/// Il contient généralement des éléments enfants, qui sont également des instances de Node.
30///
31/// Les utilisateurs sont censés dériver de cette classe pour créer des éléments personnalisés.
32///
33/// Une liste des éléments intégrés peut être trouvée dans le fichier `elements.hpp`.
34///
35/// @ingroup dom
36class Node {
37 public:
39 explicit Node(Elements children);
40 Node(const Node&) = delete;
41 Node(const Node&&) = delete;
42 Node& operator=(const Node&) = delete;
43 Node& operator=(const Node&&) = delete;
44
45 virtual ~Node();
46
47 // Étape 1: Calculer les exigences de mise en page. Indique au parent les dimensions
48 // que cet élément souhaite avoir.
49 // Propagé des Enfants aux Parents.
50 virtual void ComputeRequirement();
52
53 // Étape 2: Attribuer à cet élément ses dimensions finales.
54 // Propagé des Parents aux Enfants.
55 virtual void SetBox(Box box);
56
57 // Étape 3: (optionnel) Sélection
58 // Propagé des Parents aux Enfants.
59 virtual void Select(Selection& selection);
60
61 // Étape 4: Dessiner cet élément.
62 virtual void Render(Screen& screen);
63
64 virtual std::string GetSelectedContent(Selection& selection);
65
66 // La mise en page peut ne pas se résoudre en une seule itération pour certains éléments. Ceci
67 // leur permet de demander des itérations supplémentaires. Ce signal doit être
68 // transmis aux enfants au moins une fois.
69 struct Status {
70 int iteration = 0;
71 bool need_iteration = false;
72 };
73 virtual void Check(Status* status);
74
75 friend void Render(Screen& screen, Node* node, Selection& selection);
76
77 protected:
81};
82
83void Render(Screen& screen, const Element& element);
84void Render(Screen& screen, Node* node);
85void Render(Screen& screen, Node* node, Selection& selection);
87 Node* node,
88 Selection& selection);
89
90} // namespace ftxui
91
92#endif // FTXUI_DOM_NODE_HPP
auto screen
virtual void Render(Screen &screen)
virtual void Select(Selection &selection)
Calcule la sélection d'un élément.
Definition node.cpp:46
Elements children_
Definition node.hpp:78
virtual std::string GetSelectedContent(Selection &selection)
Definition node.cpp:71
virtual void SetBox(Box box)
Assigne une position et une dimension à un élément pour le dessin.
Definition node.cpp:41
Requirement requirement_
Definition node.hpp:79
Requirement requirement()
Definition node.hpp:51
virtual void ComputeRequirement()
Calcule l'espace nécessaire à un élément.
Definition node.cpp:20
virtual void Check(Status *status)
Definition node.cpp:64
virtual ~Node()
Node & operator=(const Node &)=delete
Node(const Node &)=delete
Box box_
Definition node.hpp:80
friend void Render(Screen &screen, Node *node, Selection &selection)
Node & operator=(const Node &&)=delete
Node(const Node &&)=delete
Node est la classe de base pour tous les éléments de l'arbre DOM.
Definition node.hpp:36
Représente une sélection dans une interface utilisateur de terminal.
Definition selection.hpp:22
Requirement est une structure qui définit les exigences de mise en page pour un Nœud dans l'interface...
Une grille rectangulaire de pixels.
Definition screen.hpp:26
Box est une structure qui représente une zone rectangulaire dans un espace 2D.
Definition box.hpp:16
L'espace de noms FTXUI ftxui::
Definition animation.hpp:10
std::string GetNodeSelectedContent(Screen &screen, Node *node, Selection &selection)
std::shared_ptr< Node > Element
Definition elements.hpp:22
std::vector< Element > Elements
Definition elements.hpp:23
void Render(Screen &screen, const Element &element)