FTXUI 6.1.9
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 puede renderizarse en un terminal.
Proporciona métodos para crear una pantalla, acceder a los píxeles y renderizar elementos.

Puedes acceder a las celdas individuales (ftxui::Pixel) de la pantalla usando el método ftxui::Screen::PixelAt, que devuelve una referencia al píxel en las coordenadas especificadas.

Example

void main() {
ftxui::Dimension::Full(), // Usar todo el ancho del terminal
ftxui::Dimension::Fixed(10) // Altura fija de 10 filas
);
// Acceder a un píxel específico en (10, 5)
auto& pixel = screen.PixelAt(10, 5);
// Establecer propiedades del píxel.
pixel.character = U'X';
pixel.foreground_color = ftxui::Color::Red;
pixel.background_color = ftxui::Color::RGB(0, 255, 0);
pixel.bold = true; // Establecer estilo en negrita
screen.Print(); // Imprimir la pantalla en el terminal
}
auto screen
static Screen Create(Dimensions dimension)
Crea una pantalla con la dimensión dada.
Definition screen.cpp:395
static Color RGB(uint8_t red, uint8_t green, uint8_t blue)
Construye un Color a partir de su representación RGB. https://en.wikipedia.org/wiki/RGB_color_model.
Note
Si las coordenadas están fuera de los límites, se devuelve un píxel ficticio.

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

Ten en cuenta que puedes restablecer la posición del cursor a la esquina superior izquierda de la pantalla después de imprimir, llamando a ftxui::Screen::ResetCursorPosition().

Example

auto screen = ...;
while(true) {
// Operaciones de dibujo:
...
// Imprimir la pantalla en el terminal. Luego restablecer la posición del cursor y el
// contenido de la pantalla.
std::cout << screen.ToString();
std::cout << screen.ResetCursorPosition(/*clear=*/true);
std::cout << std::flush;
// Dormir por un corto período para controlar la frecuencia de actualización.
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
ftxui::Dimension::Full(), // ancho
ftxui::Dimension::Fixed(10) // alto
);

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

screen.Print();
void Render(Screen &screen, const Element &element)
Muestra un elemento en un ftxui::Screen.
Definition node.cpp:84

ftxui::Pixel

Cada celda en la cuadrícula de la pantalla es un ftxui::Pixel, 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
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) realiza una comprobación de límites y devuelve una referencia al píxel en las coordenadas especificadas. Si está fuera de los límites, se devuelve una referencia a un píxel ficticio.

Cada celda en la pantalla es un ftxui::Pixel. Puedes modificarlas usando:

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

ftxui::Color

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

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

Note
Puedes consultar la capacidad del terminal usando ftxui::Terminal::ColorSupport();

Esto puede configurarse manualmente usando ftxui::Terminal::SetColorSupport().