16class Flex :
public Node {
18 Flex(
int grow_x,
int grow_y,
int shrink_x,
int shrink_y)
23 Flex(
Element child,
int grow_x,
int grow_y,
int shrink_x,
int shrink_y)
24 : Node(unpack(std::move(child))),
30 void ComputeRequirement()
override {
31 requirement_.min_x = 0;
32 requirement_.min_y = 0;
33 if (!children_.empty()) {
34 children_[0]->ComputeRequirement();
35 requirement_ = children_[0]->requirement();
38 requirement_.flex_grow_x =
grow_x_;
41 requirement_.flex_grow_y =
grow_y_;
43 if (shrink_x_ != -1) {
46 if (shrink_y_ != -1) {
51 void SetBox(Box box)
override {
53 if (children_.empty()) {
56 children_[0]->SetBox(box);
71 return std::make_shared<Flex>(1, 1, 1, 1);
95 return std::make_shared<Flex>(std::move(child), 1, 1, 1, 1);
101 return std::make_shared<Flex>(std::move(child), 1, -1, 1, -1);
107 return std::make_shared<Flex>(std::move(child), -1, 1, -1, 1);
113 return std::make_shared<Flex>(std::move(child), 1, 1, -1, -1);
119 return std::make_shared<Flex>(std::move(child), 1, -1, -1, -1);
125 return std::make_shared<Flex>(std::move(child), -1, 1, -1, -1);
131 return std::make_shared<Flex>(std::move(child), -1, -1, 1, 1);
137 return std::make_shared<Flex>(std::move(child), -1, -1, 1, -1);
143 return std::make_shared<Flex>(std::move(child), -1, -1, -1, 1);
149 return std::make_shared<Flex>(std::move(child), 0, 0, 0, 0);
154 return std::make_shared<Flex>(std::move(child), grow, grow,
shrink,
shrink);
160 return std::make_shared<Flex>(std::move(child), grow, grow, -1, -1);
166 return std::make_shared<Flex>(std::move(child), -1, -1,
shrink,
shrink);
172 return std::make_shared<Flex>(std::move(child), grow, -1,
shrink, -1);
178 return std::make_shared<Flex>(std::move(child), grow, -1, -1, -1);
184 return std::make_shared<Flex>(std::move(child), -1, -1,
shrink, -1);
190 return std::make_shared<Flex>(std::move(child), -1, grow, -1,
shrink);
196 return std::make_shared<Flex>(std::move(child), -1, grow, -1, -1);
202 return std::make_shared<Flex>(std::move(child), -1, -1, -1,
shrink);
Element xflex(Element)
在 X 軸上盡可能擴展/在需要時最小化。
Element xflex_grow(Element)
在 X 軸上盡可能擴展。
Element flex(Element child)
讓子元素依比例擴展以填滿容器中剩餘的空間。
Element yflex(Element)
在 Y 軸上盡可能擴展/在需要時最小化。
Element flex_shrink(Element child)
在需要時最小化。
Element yflex_grow(Element)
在 Y 軸上盡可能擴展。
Element flex_grow(Element child)
盡可能擴展。
Element notflex(Element child)
使元素不可伸縮。
Element xflex_shrink(Element)
在 X 軸上在需要時最小化。
Element filler()
一個會依照容器中剩餘空間 按比例擴展的元素。
Element yflex_shrink(Element)
在 Y 軸上在需要時最小化。
Decorator yflex_shrink_factor(int shrink)
std::shared_ptr< Node > Element
Decorator xflex_grow_factor(int grow)
Decorator yflex_grow_factor(int grow)
Decorator yflex_factor(int grow, int shrink)
std::function< Element(Element)> Decorator
Decorator flex_shrink_factor(int shrink)
Decorator flex_grow_factor(int grow)
Decorator xflex_shrink_factor(int shrink)
Decorator xflex_factor(int grow, int shrink)
Decorator flex_factor(int grow, int shrink)