FTXUI 7.0.3
C++ functional terminal UI.
Loading...
Searching...
No Matches
examples/component/focus.cpp
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#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/app.hpp" // for App
9#include "ftxui/component/captured_mouse.hpp" // for ftxui
10#include "ftxui/component/component.hpp" // for Slider, Renderer, Vertical
11#include "ftxui/component/component_base.hpp" // for ComponentBase
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
65 auto screen = App::Fullscreen();
66 screen.Loop(renderer);
67
68 return 0;
69}
Element make_grid()
Element make_box(int x, int y)
Component Renderer(Component child, std::function< Element()>)
Devuelve un nuevo Component, similar a |child|, pero usando |render| como el evento Component::Render...
Element text(std::string_view text)
Muestra un fragmento de texto Unicode codificado en UTF8.
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 direction, Constraint constraint, int value)
Aplica una restricción al tamaño de un elemento.
Element flex(Element child)
Hace que un elemento hijo se expanda proporcionalmente al espacio restante en un contenedor.
Definition flex.cpp:95
Element bgcolor(Color color, Element child)
Establece el color de fondo de un elemento.
Definition dom/color.cpp:96
Element separator()
Dibuja una separación vertical u horizontal entre otros dos elementos.
Element vbox(Elements children)
Un contenedor que muestra elementos verticalmente uno por uno.
Definition vbox.cpp:96
El espacio de nombres ftxui:: de FTXUI.
Definition animation.hpp:11
std::shared_ptr< Node > Element
Definition elements.hpp:25
Component Slider(SliderOption< T > options)
Un control deslizante en cualquier dirección.
int y
Definition elements.hpp:134
Element gridbox(std::vector< Elements > lines)
A container displaying a grid of elements.