18 return [a = std::move(a), b = std::move(b)](
Element element) {
19 return b(a(std::move(element)));
47 for (
auto& it : elements)
48 output.push_back(std::move(it) | decorator);
66 return decorator(std::move(element));
77 box.x_max = fullsize.dimx;
78 box.y_max = fullsize.dimy;
82 while (status.need_iteration && status.iteration < 20) {
83 e->ComputeRequirement();
86 box.x_max = std::min(box.x_max, e->requirement().min_x);
87 box.y_max = std::min(box.y_max, e->requirement().min_y);
90 status.need_iteration =
false;
94 if (!status.need_iteration)
98 box.x_max = std::min(e->requirement().min_x, fullsize.dimx);
99 box.y_max = std::min(e->requirement().min_y, fullsize.dimy);
111 class Impl :
public Node {
112 void ComputeRequirement()
override {
113 requirement_.min_x = 0;
114 requirement_.min_x = 0;
117 return std::make_unique<Impl>();
Dimensions Fit(Element &)
std::function< Element(Element)> Decorator
Element nothing(Element element)
A decoration doing absolutely nothing.
std::shared_ptr< Node > Element
std::vector< Element > Elements
Element operator|(Element, Decorator)
From an element, apply a decorator.