Compare commits
5 Commits
d6ac23e5ae
...
main
Author | SHA1 | Date | |
---|---|---|---|
80142e97b3 | |||
2e58983526 | |||
c90fcf68b5 | |||
bf48bc3565 | |||
aad373a5b5 |
2
Makefile
2
Makefile
@ -53,7 +53,7 @@ BIN := $(OUTDIR)/$(PROJ)
|
||||
SRCS += $(notdir $(wildcard src/*.cpp))
|
||||
OBJS := $(addprefix $(BUILDDIR)/, $(SRCS:.cpp=.o))
|
||||
DEPS := $(addprefix $(BUILDDIR)/, $(SRCS:.cpp=.dep))
|
||||
HDRS ?= $(wildcard src/*.hpp)
|
||||
HDRS ?= $(filter-out src/precomp.hpp, $(wildcard src/*.hpp))
|
||||
MANS := $(addprefix $(PREFIX)/, $(wildcard man/man*/*))
|
||||
|
||||
# if project supports plugins, link to libdl where needed
|
||||
|
@ -12,7 +12,7 @@ PRODUCT := lib
|
||||
|
||||
# Single source of truth for version.
|
||||
MAJOR := 1
|
||||
MINOR := 4
|
||||
MINOR := 6
|
||||
PATCH := 0
|
||||
|
||||
# Specify desired C++ standard for this project.
|
||||
|
@ -46,6 +46,12 @@ std::ostream& sc::io::show_cursor(std::ostream& out) {
|
||||
return out;
|
||||
}
|
||||
|
||||
std::ostream& sc::io::clear_screen(std::ostream& out) {
|
||||
if (should_color(out))
|
||||
out << "\x1b" << 'c';
|
||||
return out;
|
||||
}
|
||||
|
||||
std::ostream& sc::io::reset(std::ostream& out) {
|
||||
if (should_color(out))
|
||||
out << "\x1b[m";
|
||||
|
@ -11,6 +11,7 @@ namespace sc {
|
||||
std::ostream& hide_cursor(std::ostream& out);
|
||||
std::ostream& show_cursor(std::ostream& out);
|
||||
|
||||
std::ostream& clear_screen(std::ostream& out);
|
||||
std::ostream& reset(std::ostream& out);
|
||||
|
||||
std::ostream& bold(std::ostream& out);
|
||||
|
@ -34,6 +34,10 @@ void term::progress(int prefixlen,
|
||||
double cur,
|
||||
double total) const
|
||||
{
|
||||
progress(prefixlen, prefix, cur / total);
|
||||
}
|
||||
|
||||
void term::progress(int prefixlen, const std::string& prefix, double fraction) const {
|
||||
if (!_isatty) return;
|
||||
|
||||
// use unicode to make nice bar
|
||||
@ -41,12 +45,12 @@ void term::progress(int prefixlen,
|
||||
u8"\u258F", u8"\u258E", u8"\u258D", u8"\u258C",
|
||||
u8"\u258B", u8"\u258A", u8"\u2589", u8"\u2588"
|
||||
};
|
||||
if (cur > total) cur = total;
|
||||
if (fraction > 1) fraction = 1.0;
|
||||
int perclen = 5;
|
||||
int barwidth = cols() - perclen - prefixlen - 1;
|
||||
int maxsteps = barwidth * 8;
|
||||
int steps = round(cur * maxsteps / total);
|
||||
int perc = round(100 * cur / total);
|
||||
int steps = round(fraction * maxsteps);
|
||||
int perc = round(100 * fraction);
|
||||
int fill_len = barwidth - steps / 8;
|
||||
*_out << '\r' << std::setw(prefixlen) << prefix.substr(0, prefixlen) << ' ' << io::grayf(8);
|
||||
for (int i = 0; i < steps / 8; ++i) {
|
||||
|
@ -25,6 +25,10 @@ namespace sc {
|
||||
double cur,
|
||||
double total) const;
|
||||
|
||||
void progress(int prefixlen,
|
||||
const std::string& prefix,
|
||||
double fraction) const;
|
||||
|
||||
static bool has_truecolor();
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user