FTXUI 7.0.3
C++ functional terminal UI.
Loading...
Searching...
No Matches
terminal.hpp
Go to the documentation of this file.
1// Copyright 2020 Arthur Sonzogni. All rights reserved.
2// Use of this source code is governed by the MIT license that can be found in
3// the LICENSE file.
4#ifndef FTXUI_SCREEN_TERMINAL_HPP
5#define FTXUI_SCREEN_TERMINAL_HPP
6
7#include <cstdint>
8
9#include <memory>
10#include <string_view>
11#include <vector>
12
13#include "ftxui/util/export.hpp"
14
15namespace ftxui {
16
17/// @brief Dimensions es una estructura que representa el tamaño de la terminal
18/// @ingroup screen
19struct FTXUI_EXPORT(SCREEN) Dimensions {
20 int dimx;
21 int dimy;
22};
23
24namespace Terminal {
25FTXUI_EXPORT(SCREEN) Dimensions Size();
26FTXUI_EXPORT(SCREEN) void SetFallbackSize(const Dimensions& fallbackSize);
27
28/// @brief Color es una enumeración que representa el soporte de color de la
29/// terminal.
30/// @ingroup screen
37FTXUI_EXPORT(SCREEN) Color ColorSupport();
38FTXUI_EXPORT(SCREEN) void SetColorSupport(Color color);
39
40/// @brief Quirks es una estructura que representa varios comportamientos
41/// específicos de la terminal que pueden requerir alternativas.
42/// @ingroup screen
43class FTXUI_EXPORT(SCREEN) Quirks {
44 public:
45 Quirks();
46 ~Quirks();
47 Quirks(const Quirks&);
48 Quirks& operator=(const Quirks&);
49 Quirks(Quirks&&) noexcept;
50 Quirks& operator=(Quirks&&) noexcept;
51
52 /// @brief Si la fuente de la terminal admite los 8 caracteres de bloque Unicode.
53 bool BlockCharacters() const;
54 void SetBlockCharacters(bool v);
55
56 /// @brief Si la terminal maneja correctamente ocultar el cursor.
57 bool CursorHiding() const;
58 void SetCursorHiding(bool v);
59
60 /// @brief Si la terminal debe usar caracteres ASCII para los componentes.
61 bool ComponentAscii() const;
62 void SetComponentAscii(bool v);
63
64 /// @brief El nivel de soporte de color de la terminal.
65 Color ColorSupport() const;
66 void SetColorSupport(Color v);
67
68 private:
69 struct Impl;
70 std::unique_ptr<Impl> impl_;
71};
72FTXUI_EXPORT(SCREEN) Quirks GetQuirks();
73FTXUI_EXPORT(SCREEN) void SetQuirks(const Quirks& quirks);
74
75/// @brief TerminalInfo es una estructura que contiene información sobre la
76/// terminal.
77/// @ingroup screen
78class FTXUI_EXPORT(SCREEN) TerminalInfo {
79 public:
80 TerminalInfo();
81 ~TerminalInfo();
82 TerminalInfo(const TerminalInfo&) = delete;
83 TerminalInfo& operator=(const TerminalInfo&) = delete;
84 TerminalInfo(TerminalInfo&&) noexcept;
85 TerminalInfo& operator=(TerminalInfo&&) noexcept;
86
87 void SetTerm(std::string_view term);
88 void SetColorterm(std::string_view colorterm);
89 void SetTermProgram(std::string_view term_program);
90 void SetTerminalName(std::string_view terminal_name);
91 void SetTerminalEmulatorName(std::string_view terminal_emulator_name);
92 void SetCapabilities(std::vector<int> capabilities);
93
94 Color ComputeColorSupport() const;
95
96 private:
97 struct Impl;
98 std::unique_ptr<Impl> impl_;
99};
100
101/// @brief Calcula el soporte de color según variables de entorno e
102/// identificación de la terminal.
103/// @param term La variable de entorno TERM.
104/// @param colorterm La variable de entorno COLORTERM.
105/// @param term_program La variable de entorno TERM_PROGRAM.
106/// @param terminal_name El nombre de la terminal (de DA2).
107/// @param terminal_emulator_name El nombre del emulador de terminal (de XTVERSION).
108/// @param capabilities Las capacidades de la terminal (de DA1).
109FTXUI_EXPORT(SCREEN)
110Color ComputeColorSupport(std::string_view term,
111 std::string_view colorterm,
112 std::string_view term_program,
113 std::string_view terminal_name,
114 std::string_view terminal_emulator_name,
115 const std::vector<int>& capabilities);
116
117} // namespace Terminal
118
119} // namespace ftxui
120
121#endif // FTXUI_SCREEN_TERMINAL_HPP
#define FTXUI_EXPORT(component)
Definition export.hpp:24
Color
Color es una enumeración que representa el soporte de color de la terminal.
Definition terminal.hpp:31
El espacio de nombres ftxui::Terminal:: de FTXUI.
El espacio de nombres ftxui:: de FTXUI.
Definition animation.hpp:11