FTXUI 6.1.9
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// Uso de este código fuente se rige por la licencia MIT que se puede encontrar en
3// el archivo LICENSE.
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 Útil para representar el efecto del tiempo y/o eventos. Esto muestra
277/// un "video" de arte ASCII.
278/// @param charset_index El tipo de "video".
279/// @param image_index El "cuadro" del video. Necesitas aumentarlo para
280/// cada "paso".
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
El espacio de nombres ftxui:: de FTXUI.
Definition animation.hpp:10