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

title-img

El módulo ftxui::screen es la base de bajo nivel. Puede utilizarse de forma independiente, pero está diseñado principalmente para ser utilizado junto con los módulos ftxui::dom y ftxui::component.

Proporciona una ftxui::Screen.


ftxui::Screen

La clase ftxui::Screen representa una cuadrícula 2D de caracteres con estilo que se pueden renderizar en una terminal.
Proporciona métodos para crear una pantalla, acceder a celdas y renderizar elementos.

Puede acceder a las celdas individuales (ftxui::Cell) de la pantalla usando el método ftxui::Screen::CellAt, que devuelve una referencia a la celda en las coordenadas especificadas.

Ejemplo

void main() {
auto screen = ftxui::Screen::Create(
ftxui::Dimension::Full(), // Use full terminal width
ftxui::Dimension::Fixed(10) // Fixed height of 10 rows
);
// Access a specific cell at (10, 5)
auto& cell = screen.CellAt(10, 5);
// Set properties of the cell.
cell.character = "X";
cell.foreground_color = ftxui::Color::Red;
cell.background_color = ftxui::Color::RGB(0, 255, 0);
cell.bold = true; // Set bold style
screen.Print(); // Print the screen to the terminal
}
Note
Si las coordenadas están fuera de los límites, se devuelve una celda ficticia.

La pantalla puede imprimirse en el terminal usando ftxui::Screen::Print() o convertirse a un std::string con ftxui::Screen::ToString().

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

Tenga en cuenta que puede restablecer la posición del cursor a la esquina superior izquierda de la pantalla después de imprimir llamando a ftxui::Screen::ResetPosition().

Ejemplo

auto screen = ...;
while(true) {
// Drawing operations:
...
// Print the screen to the terminal. Then reset the cursor position and the
// screen content.
std::cout << screen.ToString();
std::cout << screen.ResetPosition(/*clear=*/true);
std::cout << std::flush;
// Sleep for a short duration to control the refresh rate.
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}

ftxui::Dimension

La utilidad ftxui::Dimension controla el tamaño de la pantalla:

  • Dimension::Full() — usar el ancho o alto completo del terminal
  • Dimension::Fit(element) — ajustar el tamaño para que quepa el ftxui::Element renderizado
  • Dimension::Fixed(n) — usar exactamente n columnas o filas

Estos valores deben pasarse a ftxui::Screen::Create().

ftxui::Screen::Create() proporciona dos sobrecargas:

  • Screen::Create(Dimension) establece tanto el ancho como la altura al mismo tipo de dimensión
  • Screen::Create(Dimension width, Dimension height) permite un control distinto por eje
auto screen = ftxui::Screen::Create(
ftxui::Dimension::Full(), // width
ftxui::Dimension::Fixed(10) // height
);

Una vez creado, renderiza un elemento y muestra el resultado:

ftxui::Render(screen, element);
screen.Print();
void Render(Screen &screen, Node *node, Selection &selection)
Definition node.cpp:105

ftxui::Cell

Cada celda en la cuadrícula de la pantalla es un ftxui::Cell, que contiene:

  • Punto de código Unicode.
    • character
  • ftxui::Color:
    • foreground_color
    • background_color
  • Booleanos:
    • blink
    • bold
    • dim
    • italic
    • inverted (intercambiar colores de primer plano y fondo)
    • underlined
    • underlined_double
    • strikethrough
auto screen = ftxui::Screen::Create(
ftxui::Dimension::Fixed(5),
ftxui::Dimension::Fixed(5),
);
auto& cell = screen.CellAt(3, 3);
cell.character = "X";
cell.bold = true;
cell.foreground_color = ftxui::Color::Red;
cell.background_color = ftxui::Color::RGB(0, 255, 0);
screen.Print();
Note
CellAt(x, y) realiza una verificación de límites y devuelve una referencia a la celda en la coordenada especificada. Si está fuera de los límites, se devuelve una referencia a una celda ficticia.

Cada celda en la pantalla es un ftxui::Cell. Puede modificarlas usando:

auto& cell = screen.CellAt(x, y);
cell.character = "X";
cell.bold = true;
cell.foreground_color = Color::Red;

ftxui::Color

La clase ftxui::Color se usa para definir los colores de primer plano y de fondo de cada ftxui::Cell.

Soporta varios espacios de color y paletas predefinidas. FTXUI recurrirá dinámicamente al color disponible más cercano en el terminal si el color solicitado no es compatible con el terminal.

Espacios de Color

  • Predeterminado: ftxui::Color::Default (color predeterminado del terminal)
  • Paleta de 16 colores Demo:
    • ftxui::Color::Black,
    • ftxui::Color::Red,
    • ...
  • Paleta de 256 colores Demo:
    • ftxui::Color::Chartreuse1,
    • ftxui::Color::DarkViolet,
    • ...
  • Color verdadero (24 bits) [Demo](https://arthursonzogni.github.io/FTXUI/examples/?file=dom/color_truecolor_HSV:
    • ftxui::Color::RGB(uint8_t red, uint8_t green, uint8_t blue)
    • ftxui::Color::HSV(uint8_t h, uint8_t s, uint8_t v).
Note
Puede consultar la capacidad de la terminal usando ftxui::Terminal::ColorSupport();

Esto se puede establecer manualmente usando ftxui::Terminal::SetColorSupport().