FTXUI 7.0.3
C++ functional terminal UI.
Loading...
Searching...
No Matches
src/ftxui/dom/spinner.cpp
Go to the documentation of this file.
1// Copyright 2020 Arthur Sonzogni. All rights reserved.
2// Use of this source code is governed by the MIT license that can be found in
3// the LICENSE file.
4#include <cstddef> // for size_t
5#include <string> // for basic_string, string
6#include <utility> // for move
7#include <vector> // for vector, __alloc_traits<>::value_type
8
9#include "ftxui/dom/elements.hpp" // for Element, gauge, text, vbox, spinner
10
11namespace ftxui {
12
13namespace {
14// NOLINTNEXTLINE
15const std::vector<std::vector<std::vector<std::string>>> elements = {
16 {
17 {"Replaced by the gauge"},
18 },
19 {
20 {". "},
21 {".. "},
22 {"..."},
23 },
24 {
25 {"|"},
26 {"/"},
27 {"-"},
28 {"\\"},
29 },
30 {
31 {"+"},
32 {"x"},
33 },
34 {
35 {"| "},
36 {"|| "},
37 {"|||"},
38 },
39 {
40 {"←"},
41 {"↖"},
42 {"↑"},
43 {"↗"},
44 {"→"},
45 {"↘"},
46 {"↓"},
47 {"↙"},
48 },
49 {
50 {"▁"},
51 {"▂"},
52 {"▃"},
53 {"▄"},
54 {"▅"},
55 {"▆"},
56 {"▇"},
57 {"█"},
58 {"▇"},
59 {"▆"},
60 {"▅"},
61 {"▄"},
62 {"▃"},
63 {"▁"},
64 },
65 {
66 {"▉"},
67 {"▊"},
68 {"▋"},
69 {"▌"},
70 {"▍"},
71 {"▎"},
72 {"▏"},
73 {"▎"},
74 {"▍"},
75 {"▌"},
76 {"▋"},
77 {"▊"},
78 },
79 {
80 {"▖"},
81 {"▘"},
82 {"▝"},
83 {"▗"},
84 },
85 {
86 {"◢"},
87 {"◣"},
88 {"◤"},
89 {"◥"},
90 },
91 {
92 {"◰"},
93 {"◳"},
94 {"◲"},
95 {"◱"},
96 },
97 {
98 {"◴"},
99 {"◷"},
100 {"◶"},
101 {"◵"},
102 },
103 {
104 {"◐"},
105 {"◓"},
106 {"◑"},
107 {"◒"},
108 },
109 {
110 {"◡"},
111 {"⊙"},
112 {"◠"},
113 },
114 {
115 {"⠁"},
116 {"⠂"},
117 {"⠄"},
118 {"⡀"},
119 {"⢀"},
120 {"⠠"},
121 {"⠐"},
122 {"⠈"},
123 },
124 {
125 {"⠋"},
126 {"⠙"},
127 {"⠹"},
128 {"⠸"},
129 {"⠼"},
130 {"⠴"},
131 {"⠦"},
132 {"⠧"},
133 {"⠇"},
134 {"⠏"},
135 },
136 {
137 {"(*----------)"}, {"(-*---------)"}, {"(--*--------)"},
138 {"(---*-------)"}, {"(----*------)"}, {"(-----*-----)"},
139 {"(------*----)"}, {"(-------*---)"}, {"(--------*--)"},
140 {"(---------*-)"}, {"(----------*)"}, {"(---------*-)"},
141 {"(--------*--)"}, {"(-------*---)"}, {"(------*----)"},
142 {"(-----*-----)"}, {"(----*------)"}, {"(---*-------)"},
143 {"(--*--------)"}, {"(-*---------)"},
144 },
145 {
146 {"[ ]"},
147 {"[= ]"},
148 {"[== ]"},
149 {"[=== ]"},
150 {"[==== ]"},
151 {"[===== ]"},
152 {"[======]"},
153 {"[===== ]"},
154 {"[==== ]"},
155 {"[=== ]"},
156 {"[== ]"},
157 {"[= ]"},
158 },
159 {
160 {"[ ]"},
161 {"[= ]"},
162 {"[== ]"},
163 {"[=== ]"},
164 {"[==== ]"},
165 {"[===== ]"},
166 {"[======]"},
167 {"[ =====]"},
168 {"[ ====]"},
169 {"[ ===]"},
170 {"[ ==]"},
171 {"[ =]"},
172 },
173 {
174 {"[== ]"},
175 {"[== ]"},
176 {"[== ]"},
177 {"[== ]"},
178 {"[== ]"},
179 {" [== ]"},
180 {"[ == ]"},
181 {"[ == ]"},
182 {"[ ==]"},
183 {"[ ==]"},
184 {"[ ==]"},
185 {"[ ==]"},
186 {"[ ==]"},
187 {"[ ==] "},
188 {"[ == ]"},
189 {"[ == ]"},
190 },
191 {
192 {
193 " ─╮",
194 " │",
195 " ",
196 },
197 {
198 " ╮",
199 " │",
200 " ╯",
201 },
202 {
203 " ",
204 " │",
205 " ─╯",
206 },
207 {
208 " ",
209 " ",
210 "╰─╯",
211 },
212 {
213 " ",
214 "│ ",
215 "╰─ ",
216 },
217 {
218 "╭ ",
219 "│ ",
220 "╰ ",
221 },
222 {
223 "╭─ ",
224 "│ ",
225 " ",
226 },
227 {
228 "╭─╮",
229 " ",
230 " ",
231 },
232 },
233 {
234 {
235 " /\\O ",
236 " /\\/",
237 " /\\ ",
238 " / \\ ",
239 "LOL LOL",
240 },
241 {
242 " _O ",
243 " //|_ ",
244 " | ",
245 " /| ",
246 " LLOL ",
247 },
248 {
249 " O ",
250 " /_ ",
251 " |\\ ",
252 " / | ",
253 " LOLLOL ",
254 },
255 },
256 {
257 {" ", "_______", " "},
258 {" ", "______/", " "},
259 {" _", "_____/ ", " "},
260 {" _ ", "____/ \\", " "},
261 {" _ ", "___/ \\ ", " \\"},
262 {" _ ", "__/ \\ ", " \\_"},
263 {" _ ", "_/ \\ ", " \\_/"},
264 {" _ ", "/ \\ _", " \\_/ "},
265 {"_ ", " \\ __", " \\_/ "},
266 {" ", "\\ ___", " \\_/ "},
267 {" ", " ___", "\\_/ "},
268 {" ", " _____", "_/ "},
269 {" ", " ______", "/ "},
270 {" ", "_______", " "},
271 },
272};
273
274} // namespace
275
276/// @brief Utile pour représenter l'effet du temps et/ou des événements. Cela affiche
277/// une "vidéo" en art ASCII.
278/// @param charset_index Le type de "vidéo".
279/// @param image_index L'"image" de la vidéo. Vous devez l'augmenter pour
280/// chaque "étape".
281/// @ingroup dom
282Element spinner(int charset_index, size_t image_index) {
283 if (charset_index <= 0) {
284 const int progress_size = 40;
285 image_index %= progress_size;
286 if (image_index > progress_size / 2) {
287 image_index = progress_size - image_index;
288 }
289 return gauge(float(image_index) * 0.05F); // NOLINT
290 }
291 charset_index %= int(elements.size());
292 image_index %= int(elements[charset_index].size());
293 std::vector<Element> lines;
294 for (const auto& it : elements[charset_index][image_index]) {
295 lines.push_back(text(it));
296 }
297 return vbox(std::move(lines));
298}
299
300} // namespace ftxui
Element text(std::string_view text)
Affiche un morceau de texte unicode encodé en UTF8.
Decorator size(WidthOrHeight direction, Constraint constraint, int value)
Applique une contrainte sur la taille d'un élément.
Element spinner(int charset_index, size_t image_index)
Utile pour représenter l'effet du temps et/ou des événements. Cela affiche une "vidéo" en art ASCII.
Element gauge(float progress)
Dessine une barre de progression haute définition.
Element vbox(Elements children)
Un conteneur affichant les éléments verticalement un par un.
Definition vbox.cpp:96
L'espace de noms FTXUI ftxui::
Definition animation.hpp:11
size_t image_index
Definition elements.hpp:104
std::shared_ptr< Node > Element
Definition elements.hpp:25