23 #ifndef CSL_PROGRESS_BAR_H_INCLUDED 24 #define CSL_PROGRESS_BAR_H_INCLUDED 36 static inline char onCharacter =
'=';
37 static inline char lastOnCharacter =
'>';
38 static inline char offCharacter =
'.';
39 static inline char leftSide =
'[';
40 static inline char rightSide =
']';
41 static inline const size_t defaultSizeBar = 30;
42 static inline const std::string defaultMessage =
"Progress : ";
45 std::string
const& t_message = defaultMessage,
46 size_t t_sizeBar = defaultSizeBar,
47 std::ostream & t_out = std::cout)
57 void setTimeMonitoring(
bool value)
59 timeMonitoring = value;
68 void reset(
size_t t_max)
74 void reset(
size_t t_max, std::string
const &t_message)
81 void progress(
size_t pos)
const 84 size_t n = nChar(pos);
85 out << message <<
" ";
87 for (
size_t i = 0; i != sizeBar; ++i)
89 out << ((i+1 == n) ? lastOnCharacter : onCharacter);
93 float percent = percentage(pos);
94 out <<
" " << int(percent) <<
'%';
96 out <<
" , Elapsed time : ";
98 if (percent > 0 and percent < 100) {
99 out <<
" , Time left : ";
100 double ratio = (100 - percent) * 1. / percent;
101 TimeMonitor::print(ratio * monitor.getTotalSec(), out);
104 out << ((pos + 1 == max) ?
'\n' :
'\r');
110 size_t nChar(
size_t pos)
const 112 return (pos+1) * sizeBar / max;
115 size_t percentage(
size_t pos)
const 117 return (pos+1) * 100 / max;
120 void enableCursor(
bool enable)
const 122 out << ((enable) ?
"\033[?25l" :
"\033[?25h");
Definition: progressBar.h:32
Namespace for csl library.
Definition: abreviation.h:34
Definition: timeMonitor.h:31