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);
96 return std::make_shared<Flex>(std::move(child), 1, 1, 1, 1);
102 return std::make_shared<Flex>(std::move(child), 1, -1, 1, -1);
108 return std::make_shared<Flex>(std::move(child), -1, 1, -1, 1);
114 return std::make_shared<Flex>(std::move(child), 1, 1, -1, -1);
120 return std::make_shared<Flex>(std::move(child), 1, -1, -1, -1);
126 return std::make_shared<Flex>(std::move(child), -1, 1, -1, -1);
132 return std::make_shared<Flex>(std::move(child), -1, -1, 1, 1);
138 return std::make_shared<Flex>(std::move(child), -1, -1, 1, -1);
144 return std::make_shared<Flex>(std::move(child), -1, -1, -1, 1);
150 return std::make_shared<Flex>(std::move(child), 0, 0, 0, 0);
155 return std::make_shared<Flex>(std::move(child), grow, grow,
shrink,
shrink);
161 return std::make_shared<Flex>(std::move(child), grow, grow, -1, -1);
167 return std::make_shared<Flex>(std::move(child), -1, -1,
shrink,
shrink);
173 return std::make_shared<Flex>(std::move(child), grow, -1,
shrink, -1);
179 return std::make_shared<Flex>(std::move(child), grow, -1, -1, -1);
185 return std::make_shared<Flex>(std::move(child), -1, -1,
shrink, -1);
191 return std::make_shared<Flex>(std::move(child), -1, grow, -1,
shrink);
197 return std::make_shared<Flex>(std::move(child), -1, grow, -1, -1);
203 return std::make_shared<Flex>(std::move(child), -1, -1, -1,
shrink);
Element xflex(Element)
Expand/Minimize if possible/needed on the X axis.
Element xflex_grow(Element)
Expand if possible on the X axis.
Element flex(Element child)
Make a child element to expand proportionally to the space left in a container.
Element yflex(Element)
Expand/Minimize if possible/needed on the Y axis.
Element flex_shrink(Element child)
Minimize if needed.
Element yflex_grow(Element)
Expand if possible on the Y axis.
Element flex_grow(Element child)
Expand if possible.
Element notflex(Element child)
Make the element not flexible.
Element xflex_shrink(Element)
Minimize if needed on the X axis.
Element filler()
An element that will expand proportionally to the space left in a container.
Element yflex_shrink(Element)
Minimize if needed on the Y axis.
The FTXUI ftxui:: namespace.
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)