14 class VBox :
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.y_max - box.y_min + 1;
54 for (
size_t i = 0; i < children_.size(); ++i) {
56 box.y_max = y + elements[i].size - 1;
57 children_[i]->SetBox(box);
77 return std::make_shared<VBox>(std::move(children));