15using FlexFunction = void (*)(Requirement&);
17void function_flex_grow(Requirement& r) {
22void function_xflex_grow(Requirement& r) {
26void function_yflex_grow(Requirement& r) {
30void function_flex_shrink(Requirement& r) {
35void function_xflex_shrink(Requirement& r) {
39void function_yflex_shrink(Requirement& r) {
43void function_flex(Requirement& r) {
50void function_xflex(Requirement& r) {
55void function_yflex(Requirement& r) {
60void function_not_flex(Requirement& r) {
67class Flex :
public Node {
69 explicit Flex(FlexFunction f) :
f_(f) {}
70 Flex(FlexFunction f,
Element child) : Node(unpack(std::move(child))),
f_(f) {}
71 void ComputeRequirement()
override {
72 requirement_.min_x = 0;
73 requirement_.min_y = 0;
74 if (!children_.empty()) {
75 children_[0]->ComputeRequirement();
76 requirement_ = children_[0]->requirement();
81 void SetBox(Box box)
override {
83 if (children_.empty()) {
86 children_[0]->SetBox(box);
97 return std::make_shared<Flex>(function_flex);
121 return std::make_shared<Flex>(function_flex, std::move(child));
127 return std::make_shared<Flex>(function_xflex, std::move(child));
133 return std::make_shared<Flex>(function_yflex, std::move(child));
139 return std::make_shared<Flex>(function_flex_grow, std::move(child));
145 return std::make_shared<Flex>(function_xflex_grow, std::move(child));
151 return std::make_shared<Flex>(function_yflex_grow, std::move(child));
157 return std::make_shared<Flex>(function_flex_shrink, std::move(child));
163 return std::make_shared<Flex>(function_xflex_shrink, std::move(child));
169 return std::make_shared<Flex>(function_yflex_shrink, std::move(child));
175 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