mirror of
https://github.com/ArthurSonzogni/FTXUI.git
synced 2025-09-17 08:28:09 +08:00
We have a basic decorator
This commit is contained in:

committed by
ArthurSonzogni

parent
751c8fab26
commit
75abd75b67
39
src/ftxui/dom/selectable.cpp
Normal file
39
src/ftxui/dom/selectable.cpp
Normal file
@@ -0,0 +1,39 @@
|
||||
#include "ftxui/dom/elements.hpp" // for Element, Decorator
|
||||
#include "ftxui/dom/node_decorator.hpp" // for NodeDecorator
|
||||
|
||||
|
||||
|
||||
namespace ftxui {
|
||||
namespace {
|
||||
|
||||
class Selectable : public NodeDecorator {
|
||||
public:
|
||||
explicit Selectable(Element child)
|
||||
: NodeDecorator(std::move(child)) {}
|
||||
|
||||
private:
|
||||
void Render(Screen& screen) override {
|
||||
|
||||
for (int y = box_.y_min; y <= box_.y_max; ++y) {
|
||||
for (int x = box_.x_min; x <= box_.x_max; ++x) {
|
||||
screen.PixelAt(x, y).inverted = true;
|
||||
}
|
||||
}
|
||||
|
||||
NodeDecorator::Render(screen);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
|
||||
Element selectable(Element child) {
|
||||
return std::make_shared<Selectable>(std::move(child));
|
||||
}
|
||||
|
||||
Decorator selectable(void) {
|
||||
return
|
||||
[](Element child) { return selectable(std::move(child)); };
|
||||
}
|
||||
|
||||
} // namespace ftxui
|
Reference in New Issue
Block a user