15class VBox :
public Node {
17 explicit VBox(
Elements children) :
Node(std::move(children)) {}
19 void ComputeRequirement()
override {
27 child->ComputeRequirement();
40 void SetBox(Box box)
override {
43 std::vector<box_helper::Element> elements(
children_.size());
44 for (
size_t i = 0; i <
children_.size(); ++i) {
45 auto& element = elements[i];
51 int target_size = box.y_max - box.y_min + 1;
55 for (
size_t i = 0; i <
children_.size(); ++i) {
57 box.y_max = y + elements[i].size - 1;
78 return std::make_shared<VBox>(std::move(children));
virtual void SetBox(Box box)
Assign a position and a dimension to an element for drawing.
Requirement requirement()
void Compute(std::vector< Element > *elements, int target_size)
std::shared_ptr< Node > Element
std::vector< Element > Elements
Element vbox(Elements)
A container displaying elements vertically one by one.