FTXUI
6.1.9
C++ functional terminal UI.
Toggle main menu visibility
Loading...
Searching...
No Matches
examples/component/renderer.cpp
// Copyright 2020 Arthur Sonzogni. All rights reserved.
// Use of this source code is governed by the MIT license that can be found in
// the LICENSE file.
#include <memory>
// for shared_ptr, allocator, __shared_ptr_access
#include "
ftxui/component/captured_mouse.hpp
"
// for ftxui
#include "
ftxui/component/component.hpp
"
// for Renderer, Button, Vertical
#include "
ftxui/component/component_base.hpp
"
// for ComponentBase
#include "
ftxui/component/screen_interactive.hpp
"
// for ScreenInteractive
#include "
ftxui/dom/elements.hpp
"
// for operator|, Element, text, bold, border, center, color
#include "
ftxui/screen/color.hpp
"
// for Color, Color::Red
int
main() {
using namespace
ftxui
;
auto
screen =
ScreenInteractive::FitComponent
();
// A Renderer() is a component using a lambda function as a parameter to
// render itself.
// 1. Example of focusable renderer:
auto
renderer_focusable =
Renderer
([](
bool
focused) {
if
(focused)
return
text
(
"FOCUSABLE RENDERER()"
) |
center
|
bold
|
border
;
else
return
text
(
" Focusable renderer() "
) |
center
|
border
;
});
// 2. Examples of a non focusable renderer.
auto
renderer_non_focusable =
Renderer
([&] {
return
text
(
"~~~~~ Non Focusable renderer() ~~~~~"
);
//
});
// 3. Renderer can wrap other components to redefine their Render() function.
auto
button =
Button
(
"Wrapped quit button"
, screen.ExitLoopClosure());
auto
renderer_wrap =
Renderer
(button, [&] {
if
(button->Focused())
return
button->Render() |
bold
|
color
(
Color::Red
);
else
return
button->Render();
});
// Let's renderer everyone:
screen.Loop(
Container::Vertical
({
renderer_focusable,
renderer_non_focusable,
renderer_wrap,
}));
}
captured_mouse.hpp
ftxui::Color::Red
@ Red
Definition
color.hpp:53
ftxui::ScreenInteractive::FitComponent
static ScreenInteractive FitComponent()
Definition
screen_interactive.cpp:416
color.hpp
component.hpp
component_base.hpp
elements.hpp
ftxui::Container::Vertical
Component Vertical(Components children)
A list of components, drawn one by one vertically and navigated vertically using up/down arrow key or...
Definition
container.cpp:317
ftxui
Definition
animation.hpp:10
ftxui::bold
Element bold(Element)
Use a bold font, for elements with more emphasis.
Definition
bold.cpp:33
ftxui::Button
Component Button(ButtonOption options)
Draw a button. Execute a function when clicked.
Definition
button.cpp:176
ftxui::Renderer
Component Renderer(Component child, std::function< Element()>)
Return a new Component, similar to |child|, but using |render| as the Component::Render() event.
Definition
renderer.cpp:61
ftxui::center
Element center(Element)
Center an element horizontally and vertically.
Definition
composite_decorator.cpp:31
ftxui::text
Element text(std::wstring text)
Display a piece of unicode text.
Definition
text.cpp:160
ftxui::border
Element border(Element)
Draw a border around the element.
Definition
border.cpp:227
ftxui::color
Decorator color(Color)
Decorate using a foreground color.
Definition
color.cpp:110
screen_interactive.hpp