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 是一個表示終端機大小的結構
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 是一個列舉,表示終端機的色彩支援
29/// @ingroup screen
36FTXUI_EXPORT(SCREEN) Color ColorSupport();
37FTXUI_EXPORT(SCREEN) void SetColorSupport(Color color);
38
39/// @brief Quirks 是一個結構,代表各種可能需要備援方案的
40/// 終端機特定行為。
41/// @ingroup screen
42class FTXUI_EXPORT(SCREEN) Quirks {
43 public:
44 Quirks();
45 ~Quirks();
46 Quirks(const Quirks&);
47 Quirks& operator=(const Quirks&);
48 Quirks(Quirks&&) noexcept;
49 Quirks& operator=(Quirks&&) noexcept;
50
51 /// @brief 終端機字型是否支援 8 個 Unicode 區塊字元。
52 bool BlockCharacters() const;
53 void SetBlockCharacters(bool v);
54
55 /// @brief 終端機是否能正確處理隱藏游標。
56 bool CursorHiding() const;
57 void SetCursorHiding(bool v);
58
59 /// @brief 元件是否應該使用 ASCII 字元。
60 bool ComponentAscii() const;
61 void SetComponentAscii(bool v);
62
63 /// @brief 終端機的顏色支援等級。
64 Color ColorSupport() const;
65 void SetColorSupport(Color v);
66
67 private:
68 struct Impl;
69 std::unique_ptr<Impl> impl_;
70};
71FTXUI_EXPORT(SCREEN) Quirks GetQuirks();
72FTXUI_EXPORT(SCREEN) void SetQuirks(const Quirks& quirks);
73
74/// @brief TerminalInfo 是一個包含終端機資訊的
75/// 結構。
76/// @ingroup screen
77class FTXUI_EXPORT(SCREEN) TerminalInfo {
78 public:
79 TerminalInfo();
80 ~TerminalInfo();
81 TerminalInfo(const TerminalInfo&) = delete;
82 TerminalInfo& operator=(const TerminalInfo&) = delete;
83 TerminalInfo(TerminalInfo&&) noexcept;
84 TerminalInfo& operator=(TerminalInfo&&) noexcept;
85
86 void SetTerm(std::string_view term);
87 void SetColorterm(std::string_view colorterm);
88 void SetTermProgram(std::string_view term_program);
89 void SetTerminalName(std::string_view terminal_name);
90 void SetTerminalEmulatorName(std::string_view terminal_emulator_name);
91 void SetCapabilities(std::vector<int> capabilities);
92
93 Color ComputeColorSupport() const;
94
95 private:
96 struct Impl;
97 std::unique_ptr<Impl> impl_;
98};
99
100/// @brief 根據環境變數與終端機辨識資訊,計算
101/// 顏色支援等級。
102/// @param term TERM 環境變數。
103/// @param colorterm COLORTERM 環境變數。
104/// @param term_program TERM_PROGRAM 環境變數。
105/// @param terminal_name 終端機名稱(來自 DA2)。
106/// @param terminal_emulator_name 終端機模擬器名稱(來自 XTVERSION)。
107/// @param capabilities 終端機能力(來自 DA1)。
108FTXUI_EXPORT(SCREEN)
109Color ComputeColorSupport(std::string_view term,
110 std::string_view colorterm,
111 std::string_view term_program,
112 std::string_view terminal_name,
113 std::string_view terminal_emulator_name,
114 const std::vector<int>& capabilities);
115
116} // namespace Terminal
117
118} // namespace ftxui
119
120#endif // FTXUI_SCREEN_TERMINAL_HPP
#define FTXUI_EXPORT(component)
Definition export.hpp:23
Color
Color 是一個列舉,表示終端機的色彩支援
Definition terminal.hpp:30
FTXUI ftxui::Terminal:: 命名空間
FTXUI ftxui:: 命名空間
Definition animation.hpp:11