15class VBox :
public Node {
17 explicit VBox(
Elements children) :
Node(std::move(children)) {}
19 void ComputeRequirement()
override {
28 child->ComputeRequirement();
41 void SetBox(Box box)
override {
44 std::vector<box_helper::Element> elements(
children_.size());
45 for (
size_t i = 0; i <
children_.size(); ++i) {
46 auto& element = elements[i];
52 const int target_size = box.y_max - box.y_min + 1;
56 for (
size_t i = 0; i <
children_.size(); ++i) {
58 box.y_max = y + elements[i].size - 1;
79 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.