FTXUI 6.1.9
C++ functional terminal UI.
Loading...
Searching...
No Matches
screen.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_SCREEN_SCREEN_HPP
5#define FTXUI_SCREEN_SCREEN_HPP
6
7#include <cstdint> // for uint8_t
8#include <functional> // for function
9#include <string> // for string, basic_string, allocator
10#include <vector> // for vector
11
12#include "ftxui/screen/image.hpp" // for Pixel, Image
13#include "ftxui/screen/terminal.hpp" // for Dimensions
14
15namespace ftxui {
16
17/// @brief Define cómo deben ser las dimensiones de la pantalla.
18/// @ingroup screen
19namespace Dimension {
22} // namespace Dimension
23
24/// @brief Una cuadrícula rectangular de píxeles.
25/// @ingroup screen
26class Screen : public Image {
27 public:
28 // Constructores:
29 Screen(int dimx, int dimy);
30 static Screen Create(Dimensions dimension);
31 static Screen Create(Dimensions width, Dimensions height);
32
33 // Destructor:
34 ~Screen() override = default;
35
36 std::string ToString() const;
37
38 // Imprime la pantalla en la terminal.
39 void Print() const;
40
41 // Rellena la pantalla con espacios y reinicia cualquier estado de la pantalla, como hipervínculos y
42 // cursor
43 void Clear();
44
45 // Mueve el cursor de la terminal n líneas hacia arriba con n = dimy().
46 std::string ResetPosition(bool clear = false) const;
47
48 void ApplyShader();
49
50 struct Cursor {
51 int x = 0;
52 int y = 0;
53
54 enum Shape {
55 Hidden = 0,
56 BlockBlinking = 1, // Bloque parpadeante
57 Block = 2, // Bloque
58 UnderlineBlinking = 3, // Subrayado parpadeante
59 Underline = 4, // Subrayado
60 BarBlinking = 5, // Barra parpadeante
61 Bar = 6, // Barra
62 };
63 Shape shape = Hidden; // Oculto
64 };
65
66 Cursor cursor() const { return cursor_; }
68
69 // Almacena un hipervínculo en la pantalla. Devuelve el ID del hipervínculo. El ID se
70 // utiliza para identificar el hipervínculo cuando el usuario hace clic en él.
71 uint8_t RegisterHyperlink(const std::string& link);
72 const std::string& Hyperlink(uint8_t id) const;
73
74 using SelectionStyle = std::function<void(Pixel&)>;
75 const SelectionStyle& GetSelectionStyle() const;
76 void SetSelectionStyle(SelectionStyle decorator);
77
78 protected:
80 std::vector<std::string> hyperlinks_ = {""};
81
82 // El estilo de selección actual. Esto es anulado por varios elementos del DOM.
84 pixel.inverted ^= true;
85 };
86};
87
88} // namespace ftxui
89
90#endif // FTXUI_SCREEN_SCREEN_HPP
std::function< void(Pixel &)> SelectionStyle
Definition screen.hpp:74
void ApplyShader()
Definition screen.cpp:507
const SelectionStyle & GetSelectionStyle() const
Devuelve el estilo de selección actual.
Definition screen.cpp:556
const std::string & Hyperlink(uint8_t id) const
Definition screen.cpp:547
int dimy() const
Definition image.hpp:36
std::string ToString() const
Definition screen.cpp:416
void SetCursor(Cursor cursor)
Definition screen.hpp:67
~Screen() override=default
static Screen Create(Dimensions dimension)
Crea una pantalla con la dimensión dada.
Definition screen.cpp:395
uint8_t RegisterHyperlink(const std::string &link)
Definition screen.cpp:534
Screen(int dimx, int dimy)
Definition screen.cpp:399
Cursor cursor() const
Definition screen.hpp:66
std::string ResetPosition(bool clear=false) const
Devuelve una cadena que se puede imprimir para restablecer la posición del cursor al principio de la ...
Definition screen.cpp:476
Cursor cursor_
Definition screen.hpp:79
void Clear()
Borra todos los píxeles de la pantalla.
Definition screen.cpp:495
SelectionStyle selection_style_
Definition screen.hpp:83
void SetSelectionStyle(SelectionStyle decorator)
Establece el estilo de selección actual.
Definition screen.cpp:562
std::vector< std::string > hyperlinks_
Definition screen.hpp:80
void Print() const
Definition screen.cpp:453
int dimx() const
Definition image.hpp:35
Una cuadrícula rectangular de píxeles.
Definition image.hpp:17
Una cuadrícula rectangular de píxeles.
Definition screen.hpp:26
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
El espacio de nombres ftxui::Dimension:: de FTXUI.
Dimensions Fixed(int)
Dimensions Full()
El espacio de nombres ftxui:: de FTXUI.
Definition animation.hpp:10