19void Post(std::function<
void()> f) {
21 screen->Post(std::move(f));
47 : component_(std::move(component)), hover_(hover) {
53 return ComponentBase::OnRender() | reflect(box_);
56 bool OnEvent(
Event event)
override {
58 *hover_ = box_.Contain(event.
mouse().
x, event.
mouse().
y) &&
62 return ComponentBase::OnEvent(event);
87 std::function<
void()> on_enter,
88 std::function<
void()> on_leave) {
92 std::function<
void()> on_enter,
93 std::function<
void()> on_leave)
94 : component_(std::move(component)),
95 on_enter_(std::move(on_enter)),
96 on_leave_(std::move(on_leave)) {
102 return ComponentBase::OnRender() | reflect(box_);
105 bool OnEvent(
Event event)
override {
107 const bool hover = box_.Contain(event.
mouse().
x, event.
mouse().
y) &&
109 if (hover != hover_) {
110 Post(hover ? on_enter_ : on_leave_);
115 return ComponentBase::OnEvent(event);
121 std::function<void()> on_enter_;
122 std::function<void()> on_leave_;
125 return Make<Impl>(std::move(component), std::move(on_enter),
126 std::move(on_leave));
143 return Hoverable(std::move(component), hover);
167 std::function<
void()> on_leave) {
168 return [on_enter, on_leave](
Component component) {
169 return Hoverable(std::move(component), on_enter, on_leave);
190 std::move(component),
191 [on_change] { on_change(
true); },
192 [on_change] { on_change(
false); }
210 return [on_change](
Component component) {
211 return Hoverable(std::move(component), on_change);
static ScreenInteractive * Active()
Retourne l'écran actuellement actif, ou null si aucun.
Il implémente son propre rendu en tant que ftxui::Element. Il implémente la navigation au clavier en ...
Component Hoverable(Component component, bool *hover)
Encapsule un composant. Donne la possibilité de savoir s'il est survolé par la souris.
Représente un événement. Il peut s'agir d'un événement de touche, d'un redimensionnement de terminal,...
Box est une structure qui représente une zone rectangulaire dans un espace 2D.
L'espace de noms FTXUI ftxui::
std::shared_ptr< T > Make(Args &&... args)
std::shared_ptr< Node > Element
std::function< Component(Component)> ComponentDecorator
std::shared_ptr< ComponentBase > Component