13 class HFlow :
public Node {
17 void ComputeRequirement()
override {
24 for (
auto& child : children_)
25 child->ComputeRequirement();
28 void SetBox(Box box)
override {
36 for (
auto& child : children_) {
40 if (x + requirement.min_x > box.x_max) {
47 if (y + requirement.min_y > box.y_max + 1)
51 children_box.x_min = x;
52 children_box.x_max = x + requirement.
min_x - 1;
53 children_box.y_min = y;
54 children_box.y_max = y + requirement.min_y - 1;
55 child->SetBox(children_box);
57 x = x + requirement.min_x;
58 y_next = std::max(y_next, y + requirement.min_y);
76 return std::make_shared<HFlow>(std::move(children));