FTXUI 6.1.9
C++ functional terminal UI.
Loading...
Searching...
No Matches
ftxui / screen

title-img

ftxui::screen モジュールは低レベルの基盤です。単独で使用することもできますが、 主に ftxui::dom および ftxui::component モジュールと組み合わせて使用するように設計されています。

それは ftxui::Screen を提供します。

It provides a ftxui::Screen.


ftxui::Screen

ftxui::Screen クラスは、ターミナルにレンダリングできるスタイル付き文字の2Dグリッドを表します。 画面を作成し、ピクセルにアクセスし、要素をレンダリングするメソッドを提供します。

ftxui::Screen::PixelAt メソッドを使用して、画面の個々のセル (ftxui::Pixel) にアクセスできます。 このメソッドは、指定された座標にあるピクセルへの参照を返します。

void main() {
auto screen = ftxui::Screen::Create(
ftxui::Dimension::Full(), // ターミナルの全幅を使用
ftxui::Dimension::Fixed(10) // 高さを10行に固定
);
// (10, 5) の特定のピクセルにアクセス
auto& pixel = screen.PixelAt(10, 5);
// ピクセルのプロパティを設定
pixel.character = U'X';
pixel.foreground_color = ftxui::Color::Red;
pixel.background_color = ftxui::Color::RGB(0, 255, 0);
pixel.bold = true; // 太字スタイルを設定
screen.Print(); // 画面をターミナルに出力
}
static Screen Create(Dimensions dimension)
指定された次元を持つスクリーンを作成します。
Definition screen.cpp:394
static Color RGB(uint8_t red, uint8_t green, uint8_t blue)
RGB表現から色を構築します。 https://en.wikipedia.org/wiki/RGB_color_model.
Note
座標が範囲外の場合、ダミーピクセルが返されます。

画面は ftxui::Screen::Print() を使用してターミナルに出力するか、 ftxui::Screen::ToString()std::string に変換できます。

  • Print()
    auto screen = ...;
    screen.Print();
  • ToString()
    auto screen = ...;
    std::cout << screen.ToString();

画面の印刷後、ftxui::Screen::ResetCursorPosition() を呼び出すことで、 カーソル位置を画面の左上隅にリセットできます。

auto screen = ...;
while(true) {
// 描画操作:
...
// 画面をターミナルに出力します。その後、カーソル位置と画面内容をリセットします。
std::cout << screen.ToString();
std::cout << screen.ResetCursorPosition(/*clear=*/true);
std::cout << std::flush;
// リフレッシュレートを制御するために短時間スリープします。
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}

ftxui::Dimension

ftxui::Dimension ユーティリティは画面サイズを制御します。

  • Dimension::Full() — ターミナルの全幅または全高を使用
  • Dimension::Fit(element) — レンダリングされた ftxui::Element に合わせてサイズ調整
  • Dimension::Fixed(n) — 厳密に n 列または n 行を使用

これらの値は ftxui::Screen::Create() に渡されます。

ftxui::Screen::Create() は2つのオーバーロードを提供します。

  • Screen::Create(Dimension) は幅と高さを同じ種類のディメンションに設定します
  • Screen::Create(Dimension width, Dimension height) は各軸で異なる制御を可能にします
auto screen = ftxui::Screen::Create(
ftxui::Dimension::Full(), // 幅
ftxui::Dimension::Fixed(10) // 高さ
);

作成後、要素をレンダリングして結果を表示します。

ftxui::Render(screen, element);
screen.Print();
void Render(Screen &screen, const Element &element)
要素をftxui::Screenに表示します。
Definition node.cpp:84

ftxui::Pixel

画面グリッドの各セルは ftxui::Pixel であり、以下を保持します。

  • Unicode コードポイント。
    • character
  • ftxui::Color:
    • foreground_color
    • background_color
  • 真偽値:
    • blink
    • bold
    • dim
    • italic
    • inverted (前景色と背景色を入れ替えます)
    • underlined
    • underlined_double
    • strikethrough
auto screen = ftxui::Screen::Create(
ftxui::Dimension::Fixed(5),
ftxui::Dimension::Fixed(5),
);
auto& pixel = screen.PixelAt(3, 3);
pixel.character = U'X';
pixel.bold = true;
pixel.foreground_color = ftxui::Color::Red;
pixel.background_color = ftxui::Color::RGB(0, 255, 0);
screen.Print();
Note
PixelAt(x, y) は境界チェックを行い、指定された座標にあるピクセルへの参照を返します。 範囲外の場合、ダミーピクセル参照が返されます。

画面内の各セルは ftxui::Pixel です。これらを以下のように変更できます。

auto& pixel = screen.PixelAt(x, y);
pixel.character = U'X';
pixel.bold = true;
pixel.foreground_color = Color::Red;

ftxui::Color

ftxui::Color クラスは、各 ftxui::Pixel の前景色と背景色を定義するために使用されます。

さまざまな色空間と事前定義されたパレットをサポートしています。FTXUI は、 要求された色がターミナルでサポートされていない場合、ターミナルで利用可能な 最も近い色に動的にフォールバックします。

色空間

Note
ftxui::Terminal::ColorSupport() を使用してターミナルの機能を確認できます。

これは ftxui::Terminal::SetColorSupport() を使用して手動で設定できます。