Commit 6c1fa9e6d86f10002fbacfef71353e983ca024c0
1 parent
df98143c
added time estimates to the progress bar
Showing
1 changed file
with
31 additions
and
1 deletions
Show diff stats
stim/ui/progressbar.h
... | ... | @@ -5,7 +5,28 @@ |
5 | 5 | #include <sstream> |
6 | 6 | using namespace std; |
7 | 7 | |
8 | -static void rtsProgressBar(unsigned int percent) | |
8 | +void stimPrintTime(unsigned long long s) { | |
9 | + char buffer[26]; | |
10 | + std::cout << std::fixed << std::showpoint << std::setprecision(1); | |
11 | + if (s >= 60) { //if there are more than 60 seconds | |
12 | + unsigned long long m = s / 60; //get the number of minutes | |
13 | + s = s - m * 60; //get the number of remaining seconds | |
14 | + if (m > 60) { //if more than 60 minutes | |
15 | + unsigned long long h = m / 60; | |
16 | + m = m - h * 60; //get the number of remaining minutes | |
17 | + if (h > 24) { //if there are more than 24 hours | |
18 | + unsigned long long d = h / 24; | |
19 | + h = h - d * 24; //get the number of remaining hours | |
20 | + std::cout << " " << d << "d"; | |
21 | + } | |
22 | + std::cout << " " << h << "h"; | |
23 | + } | |
24 | + std::cout << " " << m << "m"; | |
25 | + } | |
26 | + std::cout << " " << s << "s"; | |
27 | +} | |
28 | + | |
29 | +static void rtsProgressBar(unsigned int percent, double elapsed_s = 0) | |
9 | 30 | { |
10 | 31 | //std::cout<<percent<<std::endl; |
11 | 32 | stringstream bar; |
... | ... | @@ -26,6 +47,15 @@ static void rtsProgressBar(unsigned int percent) |
26 | 47 | bar<<"]"; |
27 | 48 | cout << "\r"; // carriage return back to beginning of line |
28 | 49 | cout << bar.str() << " " << slash[x] << " " << percent << " %"; // print the bars and percentage |
50 | + if (elapsed_s > 0) { | |
51 | + stimPrintTime(elapsed_s); | |
52 | + if (percent > 0) { | |
53 | + std::cout << " / "; | |
54 | + double s_per_percent = elapsed_s / percent; | |
55 | + double total = s_per_percent * 100; | |
56 | + stimPrintTime(total); | |
57 | + } | |
58 | + } | |
29 | 59 | cout.flush(); |
30 | 60 | x++; // increment to make the slash appear to rotate |
31 | 61 | if(x == 4) | ... | ... |