FTXUI/src/ftxui/dom/selectable.cpp

40 lines
804 B
C++
Raw Normal View History

2024-08-27 16:33:25 +08:00
#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