13bool 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]) {
30 auto out = std::string(data, data + index);
40 return std::move(out);
43int GeneratorInt(
const char* data,
size_t size) {
47 auto out = int(data[0]);
53Color GeneratorColor(
const char* data,
size_t size) {
54 return Color::RGB(GeneratorInt(data, size), GeneratorInt(data, size),
55 GeneratorInt(data, size));
61 option.
enabled = GeneratorBool(data, size);
62 option.
inactive = GeneratorColor(data, size);
63 option.
active = GeneratorColor(data, size);
64 option.
duration = std::chrono::milliseconds(GeneratorInt(data, size));
71 option.
background = GeneratorAnimatedColorOption(data, size);
72 option.
foreground = GeneratorAnimatedColorOption(data, size);
76ButtonOption GeneratorButtonOption(
const char* data,
size_t size) {
82UnderlineOption GeneratorUnderlineOption(
const char* data,
size_t size) {
84 option.
enabled = GeneratorBool(data, size);
87 option.
leader_duration = std::chrono::milliseconds(GeneratorInt(data, size));
89 std::chrono::milliseconds(GeneratorInt(data, size));
90 option.
leader_delay = std::chrono::milliseconds(GeneratorInt(data, size));
91 option.
follower_delay = std::chrono::milliseconds(GeneratorInt(data, size));
95MenuEntryOption GeneratorMenuEntryOption(
const char* data,
size_t size) {
101MenuOption GeneratorMenuOption(
const char* data,
size_t size) {
103 option.
underline = GeneratorUnderlineOption(data, size);
111std::vector<std::string> g_list;
113Components GeneratorComponents(
const char*& data,
size_t& size,
int depth);
115Component GeneratorComponent(
const char*& data,
size_t& size,
int depth) {
117 int value = GeneratorInt(data, size);
119 return Button(GeneratorString(data, size), [] {});
122 constexpr int value_max = 19;
123 value = (value % value_max + value_max) % value_max;
127 GeneratorString(data, size), [] {},
128 GeneratorButtonOption(data, size));
130 return Checkbox(GeneratorString(data, size), &g_bool);
132 return Input(GeneratorString(data, size), GeneratorString(data, size));
134 return Menu(&g_list, &g_int, GeneratorMenuOption(data, size));
138 return Toggle(&g_list, &g_int);
140 return Slider(GeneratorString(data, size), &g_int,
141 GeneratorInt(data, size), GeneratorInt(data, size),
142 GeneratorInt(data, size));
145 GeneratorComponent(data, size, depth - 1),
149 GeneratorComponent(data, size, depth - 1),
153 GeneratorComponent(data, size, depth - 1),
157 GeneratorComponent(data, size, depth - 1),
160 return Container::Vertical(GeneratorComponents(data, size, depth - 1));
163 return Container::Vertical(GeneratorComponents(data, size, depth - 1),
167 return Container::Horizontal(GeneratorComponents(data, size, depth - 1));
169 return Container::Horizontal(GeneratorComponents(data, size, depth - 1),
172 return Container::Tab(GeneratorComponents(data, size, depth - 1), &g_int);
174 return Maybe(GeneratorComponent(data, size, depth - 1), &g_bool);
179 GeneratorComponent(data, size, depth - 1),
180 GeneratorBool(data, size));
186Components GeneratorComponents(
const char*& data,
size_t& size,
int depth) {
189 while (size && GeneratorInt(data, size) % 2) {
190 out.push_back(GeneratorComponent(data, size, depth - 1));
193 return std::move(out);
198 g_bool = GeneratorBool(data, size);
199 g_int = GeneratorInt(data, size);
201 "test_1",
"test_2",
"test_3",
"test_4",
"test_5",
205 auto component = GeneratorComponent(data, size, depth);
207 int width = GeneratorInt(data, size);
208 int height = GeneratorInt(data, size);
217 Screen::Create(Dimension::Fixed(width), Dimension::Fixed(height));
220 std::vector<Event> events;
224 for (
size_t i = 0; i <
size; ++i) {
228 for (
const auto& event : events) {
229 component->OnEvent(event);
230 auto document = component->Render();
int LLVMFuzzerTestOneInput(const char *data, size_t size)
animation::Duration follower_duration
MenuEntryOption entries_option
animation::Duration follower_delay
UnderlineOption underline
animation::Duration leader_duration
animation::Duration duration
AnimatedColorsOption animated_colors
animation::Duration leader_delay
Component Maybe(Component, const bool *show)
Décore un composant |child|. Il est affiché uniquement lorsque |show| est vrai.
Component ResizableSplitTop(Component main, Component back, int *main_size)
Une séparation verticale entre deux composants, configurable à l'aide de la souris.
Component Menu(MenuOption options)
Une liste de texte. L'élément sélectionné est mis en évidence.
Component Toggle(ConstStringListRef entries, int *selected)
Une liste horizontale d'éléments. L'utilisateur peut naviguer à travers eux.
Component Radiobox(RadioboxOption options)
Une liste d'éléments, où un seul peut être sélectionné.
Component Button(ButtonOption options)
Dessine un bouton. Exécute une fonction lors d'un clic.
Component Input(InputOption options={})
Une zone de saisie pour éditer du texte.
Component ResizableSplitRight(Component main, Component back, int *main_size)
Une séparation horizontale entre deux composants, configurable à l'aide de la souris.
Component Dropdown(ConstStringListRef entries, int *selected)
Un menu déroulant.
Component ResizableSplitBottom(Component main, Component back, int *main_size)
Une séparation verticale entre deux composants, configurable à l'aide de la souris.
Component Checkbox(CheckboxOption options)
Dessine un élément à cocher.
Component ResizableSplitLeft(Component main, Component back, int *main_size)
Une séparation horizontale entre deux composants, configurable à l'aide de la souris.
Option concernant une couleur potentiellement animée.
Représente un événement. Il peut s'agir d'un événement de touche, d'un redimensionnement de terminal,...
Option pour l'effet de soulignement.
Decorator size(WidthOrHeight, Constraint, int value)
Applique une contrainte sur la taille d'un élément.
Direction
Direction est une énumération qui représente les quatre directions cardinales.
static Color RGB(uint8_t red, uint8_t green, uint8_t blue)
Construit une couleur à partir de sa représentation RGB. https://en.wikipedia.org/wiki/RGB_color_mode...
static Screen Create(Dimensions dimension)
Color est une classe qui représente une couleur dans l'interface utilisateur du terminal.
L'espace de noms FTXUI ftxui::
std::vector< Component > Components
std::wstring to_wstring(const std::string &s)
Convertit un std::string UTF8 en un std::wstring.
Component Collapsible(ConstStringRef label, Component child, Ref< bool > show=false)
Un composant repliable. Il affiche une case à cocher avec une flèche. Une fois activé,...
Component Slider(SliderOption< T > options)
Un curseur dans n'importe quelle direction.
void Render(Screen &screen, const Element &element)
std::shared_ptr< ComponentBase > Component
AnimatedColorOption foreground
AnimatedColorOption background