20 return [a = std::move(a), b = std::move(b)](
Element element) {
21 return b(a(std::move(element)));
40 return compose(std::move(a),
49 output.reserve(elements.size());
50 for (
auto& it : elements) {
51 output.push_back(std::move(it) | decorator);
63 return decorator(std::move(element));
90 box.x_max = fullsize.dimx;
91 box.y_max = fullsize.dimy;
95 const int max_iteration = 20;
96 while (status.need_iteration && status.iteration < max_iteration) {
97 e->ComputeRequirement();
100 box.x_max = std::min(box.x_max, e->requirement().min_x);
101 box.y_max = e->requirement().min_y;
102 if (!extend_beyond_screen) {
103 box.y_max = std::min(box.y_max, fullsize.dimy);
107 status.need_iteration =
false;
111 if (!status.need_iteration) {
115 box.x_max = std::min(e->requirement().min_x, fullsize.dimx);
116 box.y_max = e->requirement().min_y;
119 if (!extend_beyond_screen) {
120 box.y_max = std::min(box.y_max, fullsize.dimy);
133 class Impl :
public Node {
134 void ComputeRequirement()
override {
135 requirement_.min_x = 0;
136 requirement_.min_y = 0;
139 return std::make_unique<Impl>();
Node est la classe de base pour tous les éléments de l'arbre DOM.
Element nothing(Element element)
Une décoration qui ne fait absolument rien.
Dimensions Fit(Element &, bool extend_beyond_screen=false)
L'espace de noms FTXUI ftxui::
std::function< Element(Element)> Decorator
std::shared_ptr< Node > Element
std::vector< Element > Elements
Component operator|(Component component, ComponentDecorator decorator)
Component & operator|=(Component &component, ComponentDecorator decorator)