14bool GeneratorBool(
const char*& data,
size_t& size) {
18 auto out = bool(data[0] % 2);
24std::string GeneratorString(
const char*& data,
size_t& size) {
26 while (index < size && data[index]) {
29 auto out = std::string(data, data + index);
41int GeneratorInt(
const char*& data,
size_t& size) {
45 auto out = int(data[0]);
51float GeneratorFloat(
const char*& data,
size_t& size) {
55 auto out = float(data[0]) / 255.0f;
61Elements GeneratorElements(
const char*& data,
size_t& size,
int depth);
63Element GeneratorElement(
const char*& data,
size_t& size,
int depth) {
65 int value = GeneratorInt(data, size);
67 int base_choice =
value % 5;
68 if (base_choice == 0) {
69 return text(GeneratorString(data, size));
71 if (base_choice == 1) {
72 return paragraph(GeneratorString(data, size));
74 if (base_choice == 2) {
77 if (base_choice == 3) {
78 return gauge(GeneratorFloat(data, size));
83 constexpr int value_max = 20;
84 value = (
value % value_max + value_max) % value_max;
87 return text(GeneratorString(data, size));
89 return paragraph(GeneratorString(data, size));
93 return gauge(GeneratorFloat(data, size));
95 return border(GeneratorElement(data, size, depth));
99 return window(
text(GeneratorString(data, size)),
100 GeneratorElement(data, size, depth));
102 return vbox(GeneratorElements(data, size, depth));
104 return hbox(GeneratorElements(data, size, depth));
106 return dbox(GeneratorElements(data, size, depth));
108 return flexbox(GeneratorElements(data, size, depth));
110 return bold(GeneratorElement(data, size, depth));
112 return dim(GeneratorElement(data, size, depth));
114 return italic(GeneratorElement(data, size, depth));
116 return inverted(GeneratorElement(data, size, depth));
118 return underlined(GeneratorElement(data, size, depth));
120 return blink(GeneratorElement(data, size, depth));
124 return flex(GeneratorElement(data, size, depth));
132Elements GeneratorElements(
const char*& data,
size_t& size,
int depth) {
135 while (size && (GeneratorInt(data, size) % 2)) {
136 out.push_back(GeneratorElement(data, size, depth - 1));
149 int width = GeneratorInt(data, size);
150 int height = GeneratorInt(data, size);
152 width = (width % 200) + 1;
153 height = (height % 200) + 1;
156 auto element = GeneratorElement(data, size, depth);
159 Screen::Create(Dimension::Fixed(width), Dimension::Fixed(height));
int LLVMFuzzerTestOneInput(const char *data, size_t size)
Element window(Element title, Element content, BorderStyle border=ROUNDED)
Draw window with a title and a border around the element.
Element text(std::string_view text)
Display a piece of UTF8 encoded unicode text.
Element flex(Element child)
Make a child element to expand proportionally to the space left in a container.
Element bold(Element child)
Use a bold font, for elements with more emphasis.
Element borderRounded(Element child)
Draw a rounded border around the element.
Element underlined(Element child)
Underline the given element.
Element inverted(Element child)
Add a filter that will invert the foreground and the background colors.
Element strikethrough(Element child)
Apply a strikethrough to text.
Element italic(Element child)
Apply a underlinedDouble to text.
Element dbox(Elements children_)
Stack several element on top of each other.
Element paragraph(std::string_view the_text)
Return an element drawing the paragraph on multiple lines.
Element separator()
Draw a vertical or horizontal separation in between two other elements.
Element filler()
An element that will expand proportionally to the space left in a container.
Element dim(Element child)
Use a light font, for elements with less emphasis.
Element blink(Element child)
The text drawn alternates in between visible and hidden.
Element gauge(float progress)
Draw a high definition progress bar.
Element border(Element child)
Draw a border around the element.
Element vbox(Elements children)
A container displaying elements vertically one by one.
The FTXUI ftxui:: namespace.
Element flexbox(Elements, FlexboxConfig config=FlexboxConfig())
A container displaying elements on row/columns and capable of wrapping on the next column/row when fu...
std::shared_ptr< Node > Element
Element hbox(Elements children)
A container displaying elements horizontally one by one.
std::vector< Element > Elements
FTXUI_EXPORT(SCREEN) std FTXUI_EXPORT(SCREEN) std std::wstring to_wstring(T s)
void Render(Screen &screen, Node *node, Selection &selection)