14 class HBox :
public Node {
18 void ComputeRequirement()
override {
25 for (
auto& child : children_) {
26 child->ComputeRequirement();
39 void SetBox(Box box)
override {
42 std::vector<box_helper::Element> elements(children_.size());
43 for (
size_t i = 0; i < children_.size(); ++i) {
44 auto& element = elements[i];
45 const auto&
requirement = children_[i]->requirement();
50 int target_size = box.x_max - box.x_min + 1;
54 for (
size_t i = 0; i < children_.size(); ++i) {
56 box.x_max = x + elements[i].size - 1;
57 children_[i]->SetBox(box);
76 return std::make_shared<HBox>(std::move(children));