Compare commits

...

2 Commits

Author SHA1 Message Date
2e58983526 Add progress function which fraction directly 2025-05-20 18:02:34 +02:00
c90fcf68b5 Bump version 1.5.0 → 1.6.0 2025-05-20 18:02:14 +02:00
3 changed files with 12 additions and 4 deletions

View File

@ -12,7 +12,7 @@ PRODUCT := lib
# Single source of truth for version. # Single source of truth for version.
MAJOR := 1 MAJOR := 1
MINOR := 5 MINOR := 6
PATCH := 0 PATCH := 0
# Specify desired C++ standard for this project. # Specify desired C++ standard for this project.

View File

@ -34,6 +34,10 @@ void term::progress(int prefixlen,
double cur, double cur,
double total) const double total) const
{ {
progress(prefixlen, prefix, cur / total);
}
void term::progress(int prefixlen, const std::string& prefix, double fraction) const {
if (!_isatty) return; if (!_isatty) return;
// use unicode to make nice bar // use unicode to make nice bar
@ -41,12 +45,12 @@ void term::progress(int prefixlen,
u8"\u258F", u8"\u258E", u8"\u258D", u8"\u258C", u8"\u258F", u8"\u258E", u8"\u258D", u8"\u258C",
u8"\u258B", u8"\u258A", u8"\u2589", u8"\u2588" u8"\u258B", u8"\u258A", u8"\u2589", u8"\u2588"
}; };
if (cur > total) cur = total; if (fraction > 1) fraction = 1.0;
int perclen = 5; int perclen = 5;
int barwidth = cols() - perclen - prefixlen - 1; int barwidth = cols() - perclen - prefixlen - 1;
int maxsteps = barwidth * 8; int maxsteps = barwidth * 8;
int steps = round(cur * maxsteps / total); int steps = round(fraction * maxsteps);
int perc = round(100 * cur / total); int perc = round(100 * fraction);
int fill_len = barwidth - steps / 8; int fill_len = barwidth - steps / 8;
*_out << '\r' << std::setw(prefixlen) << prefix.substr(0, prefixlen) << ' ' << io::grayf(8); *_out << '\r' << std::setw(prefixlen) << prefix.substr(0, prefixlen) << ' ' << io::grayf(8);
for (int i = 0; i < steps / 8; ++i) { for (int i = 0; i < steps / 8; ++i) {

View File

@ -25,6 +25,10 @@ namespace sc {
double cur, double cur,
double total) const; double total) const;
void progress(int prefixlen,
const std::string& prefix,
double fraction) const;
static bool has_truecolor(); static bool has_truecolor();
}; };