15class HBox :
public Node {
17 explicit HBox(
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.x_max - box.x_min + 1;
56 for (
size_t i = 0; i <
children_.size(); ++i) {
58 box.x_max = x + elements[i].size - 1;
78 return std::make_shared<HBox>(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
Element hbox(Elements)
A container displaying elements horizontally one by one.
std::vector< Element > Elements