1 #include <chrono>
2 #include <indicators/cursor_control.hpp>
3 #include <indicators/indeterminate_progress_bar.hpp>
4 #include <indicators/progress_bar.hpp>
5 #include <thread>
6
main()7 int main() {
8
9 indicators::show_console_cursor(false);
10
11 {
12 // Plain old ASCII
13 indicators::ProgressBar bar{indicators::option::BarWidth{50},
14 indicators::option::Start{"["},
15 indicators::option::Fill{"="},
16 indicators::option::Lead{">"},
17 indicators::option::Remainder{" "},
18 indicators::option::End{" ]"},
19 indicators::option::PostfixText{"Plain-old ASCII"},
20 indicators::option::ForegroundColor{indicators::Color::green},
21 indicators::option::FontStyles{std::vector<indicators::FontStyle>{
22 indicators::FontStyle::bold}}};
23
24 // Update bar state
25 while (true) {
26 bar.tick();
27 if (bar.is_completed())
28 break;
29 std::this_thread::sleep_for(std::chrono::milliseconds(10));
30 }
31 }
32
33 {
34 // Unicode
35 indicators::ProgressBar bar{indicators::option::BarWidth{50},
36 indicators::option::Start{"["},
37 indicators::option::Fill{"驚くばかり"},
38 indicators::option::Lead{">"},
39 indicators::option::Remainder{" "},
40 indicators::option::End{" ]"},
41 indicators::option::PostfixText{"Japanese"},
42 indicators::option::ForegroundColor{indicators::Color::yellow},
43 indicators::option::FontStyles{std::vector<indicators::FontStyle>{
44 indicators::FontStyle::bold}}};
45
46 // Update bar state
47 while (true) {
48 bar.tick();
49 if (bar.is_completed())
50 break;
51 std::this_thread::sleep_for(std::chrono::milliseconds(10));
52 }
53 }
54
55 {
56 // Russian
57 indicators::ProgressBar bar{indicators::option::BarWidth{50},
58 indicators::option::Start{"["},
59 indicators::option::Fill{"Потрясающие"},
60 indicators::option::Remainder{" "},
61 indicators::option::End{" ]"},
62 indicators::option::PostfixText{"Russian"},
63 indicators::option::ForegroundColor{indicators::Color::red},
64 indicators::option::FontStyles{std::vector<indicators::FontStyle>{
65 indicators::FontStyle::bold}}};
66
67 // Update bar state
68 while (true) {
69 bar.tick();
70 if (bar.is_completed())
71 break;
72 std::this_thread::sleep_for(std::chrono::milliseconds(10));
73 }
74 }
75
76 {
77 // Greek
78 indicators::ProgressBar bar{indicators::option::BarWidth{50},
79 indicators::option::Start{"["},
80 indicators::option::Fill{"Φοβερός"},
81 indicators::option::Remainder{" "},
82 indicators::option::End{" ]"},
83 indicators::option::PostfixText{"Greek"},
84 indicators::option::ForegroundColor{indicators::Color::cyan},
85 indicators::option::FontStyles{std::vector<indicators::FontStyle>{
86 indicators::FontStyle::bold}}};
87
88 // Update bar state
89 while (true) {
90 bar.tick();
91 if (bar.is_completed())
92 break;
93 std::this_thread::sleep_for(std::chrono::milliseconds(10));
94 }
95 }
96
97 {
98 // Chinese
99 indicators::ProgressBar bar{indicators::option::BarWidth{50},
100 indicators::option::Start{"["},
101 indicators::option::Fill{"太棒了"},
102 indicators::option::Remainder{" "},
103 indicators::option::End{" ]"},
104 indicators::option::PostfixText{"Chinese"},
105 indicators::option::ForegroundColor{indicators::Color::green},
106 indicators::option::FontStyles{std::vector<indicators::FontStyle>{
107 indicators::FontStyle::bold}}};
108
109 // Update bar state
110 while (true) {
111 bar.tick();
112 if (bar.is_completed())
113 break;
114 std::this_thread::sleep_for(std::chrono::milliseconds(10));
115 }
116 }
117
118 {
119 // Emojis
120 indicators::ProgressBar bar{indicators::option::BarWidth{50},
121 indicators::option::Start{"["},
122 indicators::option::Fill{""},
123 indicators::option::Lead{""},
124 indicators::option::Remainder{" "},
125 indicators::option::End{" ]"},
126 indicators::option::PostfixText{"Emojis"},
127 indicators::option::ForegroundColor{indicators::Color::white},
128 indicators::option::FontStyles{std::vector<indicators::FontStyle>{
129 indicators::FontStyle::bold}}};
130
131 // Update bar state
132 while (true) {
133 bar.tick();
134 if (bar.is_completed())
135 break;
136 std::this_thread::sleep_for(std::chrono::milliseconds(10));
137 }
138 }
139
140 {
141 // Indeterminate progress bar
142 indicators::IndeterminateProgressBar bar{
143 indicators::option::BarWidth{50},
144 indicators::option::Start{"["},
145 indicators::option::Fill{"✯"},
146 indicators::option::Lead{"載入中"},
147 indicators::option::End{" ]"},
148 indicators::option::PostfixText{"Loading Progress Bar"},
149 indicators::option::ForegroundColor{indicators::Color::yellow},
150 indicators::option::FontStyles{
151 std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}};
152
153 auto job = [&bar]() {
154 std::this_thread::sleep_for(std::chrono::milliseconds(10000));
155 bar.mark_as_completed();
156 };
157 std::thread job_completion_thread(job);
158
159 // Update bar state
160 while (!bar.is_completed()) {
161 bar.tick();
162 std::this_thread::sleep_for(std::chrono::milliseconds(100));
163 }
164
165 job_completion_thread.join();
166 }
167
168 indicators::show_console_cursor(true);
169
170 return 0;
171 }
172