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)
Dessine une fenêtre avec un titre et une bordure autour de l'élément.
Element text(std::string_view text)
Affiche un morceau de texte unicode encodé en UTF8.
Element flex(Element child)
Permet à un élément enfant de s'étendre proportionnellement à l'espace restant dans un conteneur.
Element bold(Element child)
Utilise une police en gras, pour les éléments avec plus d'emphase.
Element borderRounded(Element child)
Dessine une bordure arrondie autour de l'élément.
Element underlined(Element child)
Souligne l'élément donné.
Element inverted(Element child)
Ajoute un filtre qui inversera les couleurs de premier plan et d'arrière-plan.
Element strikethrough(Element child)
Applique un barré au texte.
Element italic(Element child)
Applique un double soulignement au texte.
Element dbox(Elements children_)
Empile plusieurs éléments les uns sur les autres.
Element paragraph(std::string_view the_text)
Renvoie un élément affichant le paragraphe sur plusieurs lignes.
Element separator()
Dessine une séparation verticale ou horizontale entre deux autres éléments.
Element filler()
Un élément qui s'étendra proportionnellement à l'espace restant dans un conteneur.
Element dim(Element child)
Utilise une police de caractères claire, pour les éléments moins mis en valeur.
Element blink(Element child)
Le texte affiché alterne entre visible et masqué.
Element gauge(float progress)
Dessine une barre de progression haute définition.
Element border(Element child)
Dessine une bordure autour de l'élément.
Element vbox(Elements children)
Un conteneur affichant les éléments verticalement un par un.
L'espace de noms FTXUI ftxui::
Element flexbox(Elements, FlexboxConfig config=FlexboxConfig())
Un conteneur affichant des éléments sur des lignes/colonnes et capable de passer à la colonne/ligne s...
std::shared_ptr< Node > Element
Element hbox(Elements children)
Un conteneur affichant les éléments horizontalement un par un.
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)