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/// @ingroup screen
76class FTXUI_EXPORT(SCREEN) TerminalInfo {
77 public:
78 TerminalInfo();
79 ~TerminalInfo();
80 TerminalInfo(const TerminalInfo&) = delete;
81 TerminalInfo& operator=(const TerminalInfo&) = delete;
82 TerminalInfo(TerminalInfo&&) noexcept;
83 TerminalInfo& operator=(TerminalInfo&&) noexcept;
84
85 void SetTerm(std::string_view term);
86 void SetColorterm(std::string_view colorterm);
87 void SetTermProgram(std::string_view term_program);
88 void SetTerminalName(std::string_view terminal_name);
89 void SetTerminalEmulatorName(std::string_view terminal_emulator_name);
90 void SetCapabilities(std::vector<int> capabilities);
91
92 Color ComputeColorSupport() const;
93
94 private:
95 struct Impl;
96 std::unique_ptr<Impl> impl_;
97};
98
99/// @brief 環境変数とターミナル識別に基づいて色サポートを計算します。
100/// @param term TERM環境変数。
101/// @param colorterm COLORTERM環境変数。
102/// @param term_program TERM_PROGRAM環境変数。
103/// @param terminal_name ターミナル名 (DA2から)。
104/// @param terminal_emulator_name ターミナルエミュレータ名 (XTVERSIONから)。
105/// @param capabilities ターミナルの能力 (DA1から)。
106FTXUI_EXPORT(SCREEN)
107Color ComputeColorSupport(std::string_view term,
108 std::string_view colorterm,
109 std::string_view term_program,
110 std::string_view terminal_name,
111 std::string_view terminal_emulator_name,
112 const std::vector<int>& capabilities);
113
114} // namespace Terminal
115
116} // namespace ftxui
117
118#endif // FTXUI_SCREEN_TERMINAL_HPP
#define FTXUI_EXPORT(component)
Definition export.hpp:25
Color
Colorは、ターミナルの色サポートを表す列挙型です。
Definition terminal.hpp:30
FTXUI ftxui::Terminal::名前空間
FTXUI ftxui::名前空間
Definition animation.hpp:11