mirror of
https://github.com/p-ranav/indicators.git
synced 2025-12-16 04:18:51 +08:00
Closes #18
This commit is contained in:
@@ -149,6 +149,7 @@ private:
|
|||||||
std::atomic<bool> _show_elapsed_time{false};
|
std::atomic<bool> _show_elapsed_time{false};
|
||||||
std::atomic<bool> _show_remaining_time{false};
|
std::atomic<bool> _show_remaining_time{false};
|
||||||
std::atomic<bool> _saved_start_time{false};
|
std::atomic<bool> _saved_start_time{false};
|
||||||
|
std::chrono::nanoseconds _elapsed;
|
||||||
std::chrono::time_point<std::chrono::high_resolution_clock> _start_time_point;
|
std::chrono::time_point<std::chrono::high_resolution_clock> _start_time_point;
|
||||||
std::mutex _mutex;
|
std::mutex _mutex;
|
||||||
Color _foreground_color{indicators::Color::WHITE};
|
Color _foreground_color{indicators::Color::WHITE};
|
||||||
@@ -172,7 +173,8 @@ private:
|
|||||||
}
|
}
|
||||||
std::lock_guard<std::mutex> lock{_mutex};
|
std::lock_guard<std::mutex> lock{_mutex};
|
||||||
auto now = std::chrono::high_resolution_clock::now();
|
auto now = std::chrono::high_resolution_clock::now();
|
||||||
auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(now - _start_time_point);
|
if (!_completed)
|
||||||
|
_elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(now - _start_time_point);
|
||||||
|
|
||||||
std::cout << termcolor::bold;
|
std::cout << termcolor::bold;
|
||||||
details::set_stream_color(std::cout, _foreground_color);
|
details::set_stream_color(std::cout, _foreground_color);
|
||||||
@@ -191,7 +193,7 @@ private:
|
|||||||
|
|
||||||
if (_show_elapsed_time) {
|
if (_show_elapsed_time) {
|
||||||
std::cout << " [";
|
std::cout << " [";
|
||||||
details::write_duration(std::cout, elapsed);
|
details::write_duration(std::cout, _elapsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_show_remaining_time) {
|
if (_show_remaining_time) {
|
||||||
@@ -200,8 +202,8 @@ private:
|
|||||||
else
|
else
|
||||||
std::cout << " [";
|
std::cout << " [";
|
||||||
auto eta = std::chrono::nanoseconds(
|
auto eta = std::chrono::nanoseconds(
|
||||||
_progress > 0 ? static_cast<long long>(elapsed.count() * 100 / _progress) : 0);
|
_progress > 0 ? static_cast<long long>(_elapsed.count() * 100 / _progress) : 0);
|
||||||
auto remaining = eta > elapsed ? (eta - elapsed) : (elapsed - eta);
|
auto remaining = eta > _elapsed ? (eta - _elapsed) : (_elapsed - eta);
|
||||||
details::write_duration(std::cout, remaining);
|
details::write_duration(std::cout, remaining);
|
||||||
std::cout << "]";
|
std::cout << "]";
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user