16using FlexFunction = void (*)(Requirement&);
18void function_flex_grow(Requirement& r) {
23void function_xflex_grow(Requirement& r) {
27void function_yflex_grow(Requirement& r) {
31void function_flex_shrink(Requirement& r) {
36void function_xflex_shrink(Requirement& r) {
40void function_yflex_shrink(Requirement& r) {
44void function_flex(Requirement& r) {
51void function_xflex(Requirement& r) {
56void function_yflex(Requirement& r) {
61void function_not_flex(Requirement& r) {
68class Flex :
public Node {
70 explicit Flex(FlexFunction f) :
f_(f) {}
71 Flex(FlexFunction f,
Element child) : Node(unpack(std::move(child))),
f_(f) {}
72 void ComputeRequirement()
override {
73 requirement_.min_x = 0;
74 requirement_.min_y = 0;
75 if (!children_.empty()) {
76 children_[0]->ComputeRequirement();
77 requirement_ = children_[0]->requirement();
82 void SetBox(Box box)
override {
84 if (children_.empty()) {
87 children_[0]->SetBox(box);
98 return std::make_shared<Flex>(function_flex);
141 return std::make_shared<Flex>(function_flex, std::move(child));
147 return std::make_shared<Flex>(function_xflex, std::move(child));
153 return std::make_shared<Flex>(function_yflex, std::move(child));
159 return std::make_shared<Flex>(function_flex_grow, std::move(child));
165 return std::make_shared<Flex>(function_xflex_grow, std::move(child));
171 return std::make_shared<Flex>(function_yflex_grow, std::move(child));
177 return std::make_shared<Flex>(function_flex_shrink, std::move(child));
183 return std::make_shared<Flex>(function_xflex_shrink, std::move(child));
189 return std::make_shared<Flex>(function_yflex_shrink, std::move(child));
195 return std::make_shared<Flex>(function_not_flex, std::move(child));
virtual void SetBox(Box box)
為元素分配繪圖位置和尺寸。
Element xflex(Element)
在 X 軸上盡可能擴展/在需要時最小化。
Element xflex_grow(Element)
在 X 軸上盡可能擴展。
Element flex(Element)
使子元素按比例擴展以佔據容器中剩餘的空間。
Element yflex(Element)
在 Y 軸上盡可能擴展/在需要時最小化。
Element flex_shrink(Element)
在需要時最小化。
Element yflex_grow(Element)
在 Y 軸上盡可能擴展。
Element flex_grow(Element)
盡可能擴展。
Element notflex(Element)
使元素不可伸縮。
Element xflex_shrink(Element)
在 X 軸上在需要時最小化。
Element filler()
一個元素,它會按比例擴展以佔據容器中剩餘的空間。
Element yflex_shrink(Element)
在 Y 軸上在需要時最小化。
std::shared_ptr< Node > Element