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);
70 return std::make_shared<Flex>(1, 1, 1, 1);
94 return std::make_shared<Flex>(std::move(child), 1, 1, 1, 1);
100 return std::make_shared<Flex>(std::move(child), 1, -1, 1, -1);
106 return std::make_shared<Flex>(std::move(child), -1, 1, -1, 1);
112 return std::make_shared<Flex>(std::move(child), 1, 1, -1, -1);
118 return std::make_shared<Flex>(std::move(child), 1, -1, -1, -1);
124 return std::make_shared<Flex>(std::move(child), -1, 1, -1, -1);
130 return std::make_shared<Flex>(std::move(child), -1, -1, 1, 1);
136 return std::make_shared<Flex>(std::move(child), -1, -1, 1, -1);
142 return std::make_shared<Flex>(std::move(child), -1, -1, -1, 1);
148 return std::make_shared<Flex>(std::move(child), 0, 0, 0, 0);
153 return std::make_shared<Flex>(std::move(child), grow, grow,
shrink,
shrink);
159 return std::make_shared<Flex>(std::move(child), grow, grow, -1, -1);
165 return std::make_shared<Flex>(std::move(child), -1, -1,
shrink,
shrink);
171 return std::make_shared<Flex>(std::move(child), grow, -1,
shrink, -1);
177 return std::make_shared<Flex>(std::move(child), grow, -1, -1, -1);
183 return std::make_shared<Flex>(std::move(child), -1, -1,
shrink, -1);
189 return std::make_shared<Flex>(std::move(child), -1, grow, -1,
shrink);
195 return std::make_shared<Flex>(std::move(child), -1, grow, -1, -1);
201 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)