FTXUI 6.1.9
C++ functional terminal UI.
Loading...
Searching...
No Matches
examples/component/focus.cpp
Go to the documentation of this file.
1// Copyright 2020 Arthur Sonzogni. Todos los derechos reservados.
2// El uso de este código fuente se rige por la licencia MIT que se puede encontrar en
3// el archivo LICENSE.
4#include <memory> // for allocator, shared_ptr, __shared_ptr_access
5#include <string> // for operator+, char_traits, to_string, string
6#include <vector> // for vector
7
8#include "ftxui/component/captured_mouse.hpp" // for ftxui
9#include "ftxui/component/component.hpp" // for Slider, Renderer, Vertical
10#include "ftxui/component/component_base.hpp" // for ComponentBase
11#include "ftxui/component/screen_interactive.hpp" // for ScreenInteractive
12#include "ftxui/dom/elements.hpp" // for Elements, Element, operator|, separator, text, focusPositionRelative, size, border, flex, frame, bgcolor, gridbox, vbox, EQUAL, center, HEIGHT, WIDTH
13#include "ftxui/screen/color.hpp" // for Color
14
15using namespace ftxui;
16
17Element make_box(int x, int y) {
18 std::string title = "(" + std::to_string(x) + ", " + std::to_string(y) + ")";
19 return text(title) | center | size(WIDTH, EQUAL, 18) |
20 size(HEIGHT, EQUAL, 9) | border |
21 bgcolor(Color::HSV(x * 255 / 15, 255, y * 255 / 15));
22};
23
25 std::vector<Elements> rows;
26 for (int i = 0; i < 15; i++) {
27 std::vector<Element> cols;
28 for (int j = 0; j < 15; j++) {
29 cols.push_back(make_box(i, j));
30 }
31 rows.push_back(cols);
32 }
33
34 return gridbox(rows);
35};
36
37int main() {
38 float focus_x = 0.5f;
39 float focus_y = 0.5f;
40
41 auto slider_x = Slider("x", &focus_x, 0.f, 1.f, 0.01f);
42 auto slider_y = Slider("y", &focus_y, 0.f, 1.f, 0.01f);
43
44 auto renderer = Renderer(
45 Container::Vertical({
46 slider_x,
47 slider_y,
48 }),
49 [&] {
50 auto title = "focusPositionRelative(" + //
51 std::to_string(focus_x) + ", " + //
52 std::to_string(focus_y) + ")"; //
53 return vbox({
54 text(title),
55 separator(),
56 slider_x->Render(),
57 slider_y->Render(),
58 separator(),
59 make_grid() | focusPositionRelative(focus_x, focus_y) |
60 frame | flex,
61 }) |
62 border;
63 });
64
66 screen.Loop(renderer);
67
68 return 0;
69}
auto screen
Element make_grid()
Element make_box(int x, int y)
static ScreenInteractive Fullscreen()
Component Renderer(Component child, std::function< Element()>)
Retorna un nuevo Componente, similar a |child|, pero usando |render| como el evento Component::Render...
virtual void Render(Screen &screen)
Muestra un elemento en un ftxui::Screen.
Definition node.cpp:59
Decorator bgcolor(Color)
Decora usando un color de fondo.
Decorator focusPositionRelative(float x, float y)
Utilizado dentro de un frame, esto fuerza que la vista se desplace hacia una posición determinada....
Decorator size(WidthOrHeight, Constraint, int value)
Aplica una restricción al tamaño de un elemento.
Element flex(Element)
Hace que un elemento hijo se expanda proporcionalmente al espacio restante en un contenedor.
Definition flex.cpp:123
Element text(std::wstring text)
Muestra un fragmento de texto Unicode.
Definition text.cpp:160
Element separator()
Dibuja una separación vertical u horizontal entre otros dos elementos.
static Color HSV(uint8_t hue, uint8_t saturation, uint8_t value)
Construye un Color a partir de su representación HSV. https://en.wikipedia.org/wiki/HSL_and_HSV.
std::string title
El espacio de nombres ftxui:: de FTXUI.
Definition animation.hpp:10
std::shared_ptr< Node > Element
Definition elements.hpp:22
Element vbox(Elements)
Component Slider(SliderOption< T > options)
Un deslizador en cualquier dirección.
Element gridbox(std::vector< Elements > lines)
Un contenedor que muestra una cuadrícula de elementos.