mirror of
https://github.com/p-ranav/indicators.git
synced 2025-12-16 04:18:51 +08:00
Merge pull request #40 from p-ranav/feature/font_styles
Feature/font styles
This commit is contained in:
@@ -4,7 +4,7 @@ if(DEFINED PROJECT_NAME)
|
|||||||
set(INDICATORS_SUBPROJECT ON)
|
set(INDICATORS_SUBPROJECT ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
project(indicators VERSION 1.8.0 LANGUAGES CXX
|
project(indicators VERSION 1.8.0 LANGUAGES CXX)
|
||||||
HOMEPAGE_URL "https://github.com/p-ranav/indicators"
|
HOMEPAGE_URL "https://github.com/p-ranav/indicators"
|
||||||
DESCRIPTION "Activity Indicators for Modern C++")
|
DESCRIPTION "Activity Indicators for Modern C++")
|
||||||
|
|
||||||
|
|||||||
24
README.md
24
README.md
@@ -81,7 +81,8 @@ int main() {
|
|||||||
option::Remainder{" "},
|
option::Remainder{" "},
|
||||||
option::End{"]"},
|
option::End{"]"},
|
||||||
option::PostfixText{"Extracting Archive"},
|
option::PostfixText{"Extracting Archive"},
|
||||||
option::ForegroundColor{Color::green}
|
option::ForegroundColor{Color::green},
|
||||||
|
option::FontStyles{std::vector<FontStyle>{FontStyle::bold}}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Update bar state
|
// Update bar state
|
||||||
@@ -125,7 +126,8 @@ int main() {
|
|||||||
option::Remainder{"-"},
|
option::Remainder{"-"},
|
||||||
option::End{" ]"},
|
option::End{" ]"},
|
||||||
option::PostfixText{"Loading dependency 1/4"},
|
option::PostfixText{"Loading dependency 1/4"},
|
||||||
option::ForegroundColor{Color::cyan}
|
option::ForegroundColor{Color::cyan},
|
||||||
|
option::FontStyles{std::vector<FontStyle>{FontStyle::bold}}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Update bar state
|
// Update bar state
|
||||||
@@ -186,7 +188,8 @@ int main() {
|
|||||||
option::PrefixText{"Training Gaze Network 👀"},
|
option::PrefixText{"Training Gaze Network 👀"},
|
||||||
option::ForegroundColor{Color::yellow},
|
option::ForegroundColor{Color::yellow},
|
||||||
option::ShowElapsedTime{true},
|
option::ShowElapsedTime{true},
|
||||||
option::ShowRemainingTime{true}
|
option::ShowRemainingTime{true},
|
||||||
|
option::FontStyles{std::vector<FontStyle>{FontStyle::bold}}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Update bar state
|
// Update bar state
|
||||||
@@ -227,7 +230,8 @@ int main() {
|
|||||||
option::BarWidth{80},
|
option::BarWidth{80},
|
||||||
option::Start{"["},
|
option::Start{"["},
|
||||||
option::End{"]"},
|
option::End{"]"},
|
||||||
option::ForegroundColor{Color::white}
|
option::ForegroundColor{Color::white} ,
|
||||||
|
option::FontStyles{std::vector<FontStyle>{FontStyle::bold}}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Update bar state
|
// Update bar state
|
||||||
@@ -278,7 +282,8 @@ int main() {
|
|||||||
option::ForegroundColor{Color::yellow},
|
option::ForegroundColor{Color::yellow},
|
||||||
option::ShowElapsedTime{true},
|
option::ShowElapsedTime{true},
|
||||||
option::ShowRemainingTime{true},
|
option::ShowRemainingTime{true},
|
||||||
option::PrefixText{"Progress Bar #1 "}
|
option::PrefixText{"Progress Bar #1 "},
|
||||||
|
option::FontStyles{std::vector<FontStyle>{FontStyle::bold}}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Configure second progress bar
|
// Configure second progress bar
|
||||||
@@ -293,7 +298,8 @@ int main() {
|
|||||||
option::ForegroundColor{Color::cyan},
|
option::ForegroundColor{Color::cyan},
|
||||||
option::ShowElapsedTime{true},
|
option::ShowElapsedTime{true},
|
||||||
option::ShowRemainingTime{true},
|
option::ShowRemainingTime{true},
|
||||||
option::PrefixText{"Progress Bar #2 "}
|
option::PrefixText{"Progress Bar #2 "},
|
||||||
|
option::FontStyles{std::vector<FontStyle>{FontStyle::bold}}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Configure third progress bar
|
// Configure third progress bar
|
||||||
@@ -307,7 +313,8 @@ int main() {
|
|||||||
option::ForegroundColor{Color::red},
|
option::ForegroundColor{Color::red},
|
||||||
option::ShowElapsedTime{true},
|
option::ShowElapsedTime{true},
|
||||||
option::ShowRemainingTime{true},
|
option::ShowRemainingTime{true},
|
||||||
option::PrefixText{"Progress Bar #3 "}
|
option::PrefixText{"Progress Bar #3 "},
|
||||||
|
option::FontStyles{std::vector<FontStyle>{FontStyle::bold}}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Construct MultiProgress object
|
// Construct MultiProgress object
|
||||||
@@ -533,7 +540,8 @@ int main() {
|
|||||||
indicators::ProgressSpinner spinner{
|
indicators::ProgressSpinner spinner{
|
||||||
option::PostfixText{"Checking credentials"},
|
option::PostfixText{"Checking credentials"},
|
||||||
option::ForegroundColor{Color::yellow},
|
option::ForegroundColor{Color::yellow},
|
||||||
option::SpinnerStates{std::vector<std::string>{"⠈", "⠐", "⠠", "⢀", "⡀", "⠄", "⠂", "⠁"}}
|
option::SpinnerStates{std::vector<std::string>{"⠈", "⠐", "⠠", "⢀", "⡀", "⠄", "⠂", "⠁"}},
|
||||||
|
option::FontStyles{std::vector<FontStyle>{FontStyle::bold}}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Update spinner state
|
// Update spinner state
|
||||||
|
|||||||
@@ -17,7 +17,9 @@ int main() {
|
|||||||
option::Lead{"■"},
|
option::Lead{"■"},
|
||||||
option::Remainder{" "},
|
option::Remainder{" "},
|
||||||
option::End{" ]"},
|
option::End{" ]"},
|
||||||
option::ForegroundColor{indicators::Color::yellow}};
|
option::ForegroundColor{indicators::Color::yellow},
|
||||||
|
option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}};
|
||||||
|
|
||||||
std::atomic<size_t> index{0};
|
std::atomic<size_t> index{0};
|
||||||
std::vector<std::string> status_text = {"Rocket.exe is not responding",
|
std::vector<std::string> status_text = {"Rocket.exe is not responding",
|
||||||
@@ -58,6 +60,7 @@ int main() {
|
|||||||
p.set_option(option::End{""});
|
p.set_option(option::End{""});
|
||||||
p.set_option(option::ForegroundColor{indicators::Color::white});
|
p.set_option(option::ForegroundColor{indicators::Color::white});
|
||||||
p.set_option(option::ShowPercentage{false});
|
p.set_option(option::ShowPercentage{false});
|
||||||
|
p.set_option(option::FontStyles{std::vector<indicators::FontStyle>{indicators::FontStyle::bold}});
|
||||||
auto job = [&p]() {
|
auto job = [&p]() {
|
||||||
while (true) {
|
while (true) {
|
||||||
p.set_option(
|
p.set_option(
|
||||||
@@ -88,6 +91,7 @@ int main() {
|
|||||||
p.set_option(option::End{"]"});
|
p.set_option(option::End{"]"});
|
||||||
p.set_option(option::PostfixText{"Getting started"});
|
p.set_option(option::PostfixText{"Getting started"});
|
||||||
p.set_option(option::ForegroundColor{indicators::Color::green});
|
p.set_option(option::ForegroundColor{indicators::Color::green});
|
||||||
|
p.set_option(option::FontStyles{std::vector<indicators::FontStyle>{indicators::FontStyle::bold}});
|
||||||
auto job = [&p]() {
|
auto job = [&p]() {
|
||||||
while (true) {
|
while (true) {
|
||||||
auto ticks = p.current();
|
auto ticks = p.current();
|
||||||
@@ -124,6 +128,7 @@ int main() {
|
|||||||
p4.set_option(option::ForegroundColor{indicators::Color::cyan});
|
p4.set_option(option::ForegroundColor{indicators::Color::cyan});
|
||||||
p4.set_option(option::PostfixText{"Restoring system state"});
|
p4.set_option(option::PostfixText{"Restoring system state"});
|
||||||
p4.set_option(option::ShowPercentage{false});
|
p4.set_option(option::ShowPercentage{false});
|
||||||
|
p4.set_option(option::FontStyles{std::vector<indicators::FontStyle>{indicators::FontStyle::bold}});
|
||||||
std::atomic<size_t> index4{0};
|
std::atomic<size_t> index4{0};
|
||||||
auto job4 = [&p4, &index4, &lead_spinner]() {
|
auto job4 = [&p4, &index4, &lead_spinner]() {
|
||||||
while (true) {
|
while (true) {
|
||||||
@@ -163,7 +168,9 @@ int main() {
|
|||||||
option::Remainder{"-"},
|
option::Remainder{"-"},
|
||||||
option::End{"]"},
|
option::End{"]"},
|
||||||
option::ForegroundColor{indicators::Color::white},
|
option::ForegroundColor{indicators::Color::white},
|
||||||
option::PostfixText{"Reverting system restore"}};
|
option::PostfixText{"Reverting system restore"},
|
||||||
|
option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}};
|
||||||
p.set_progress(100); // TODO backwards as an option?
|
p.set_progress(100); // TODO backwards as an option?
|
||||||
std::atomic<size_t> progress{100};
|
std::atomic<size_t> progress{100};
|
||||||
auto job = [&p, &progress]() {
|
auto job = [&p, &progress]() {
|
||||||
@@ -190,7 +197,8 @@ int main() {
|
|||||||
indicators::ProgressSpinner p{
|
indicators::ProgressSpinner p{
|
||||||
option::PrefixText{""}, option::PostfixText{"Checking credentials"},
|
option::PrefixText{""}, option::PostfixText{"Checking credentials"},
|
||||||
option::ForegroundColor{indicators::Color::yellow},
|
option::ForegroundColor{indicators::Color::yellow},
|
||||||
option::SpinnerStates{std::vector<std::string>{"⠈", "⠐", "⠠", "⢀", "⡀", "⠄", "⠂", "⠁"}}};
|
option::SpinnerStates{std::vector<std::string>{"⠈", "⠐", "⠠", "⢀", "⡀", "⠄", "⠂", "⠁"}},
|
||||||
|
option::FontStyles{std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}};
|
||||||
|
|
||||||
auto job = [&p]() {
|
auto job = [&p]() {
|
||||||
while (true) {
|
while (true) {
|
||||||
@@ -219,7 +227,8 @@ int main() {
|
|||||||
indicators::ProgressSpinner p{
|
indicators::ProgressSpinner p{
|
||||||
option::PrefixText{" - "}, option::PostfixText{"Searching for the Moon"},
|
option::PrefixText{" - "}, option::PostfixText{"Searching for the Moon"},
|
||||||
option::ForegroundColor{indicators::Color::white}, option::ShowPercentage{false},
|
option::ForegroundColor{indicators::Color::white}, option::ShowPercentage{false},
|
||||||
option::SpinnerStates{std::vector<std::string>{"▖", "▘", "▝", "▗"}}};
|
option::SpinnerStates{std::vector<std::string>{"▖", "▘", "▝", "▗"}},
|
||||||
|
option::FontStyles{std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}};
|
||||||
auto job = [&p]() {
|
auto job = [&p]() {
|
||||||
while (true) {
|
while (true) {
|
||||||
auto current = p.current();
|
auto current = p.current();
|
||||||
@@ -263,7 +272,9 @@ int main() {
|
|||||||
option::Remainder{" "},
|
option::Remainder{" "},
|
||||||
option::End{"🌑"},
|
option::End{"🌑"},
|
||||||
option::PostfixText{"Achieved low-Earth orbit"},
|
option::PostfixText{"Achieved low-Earth orbit"},
|
||||||
option::ForegroundColor{indicators::Color::white}};
|
option::ForegroundColor{indicators::Color::white},
|
||||||
|
option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}};
|
||||||
std::vector<std::string> ship_trail{"⠁", "⠂", "⠄", "⡀", "⢀", "⠠", "⠐", "⠈"};
|
std::vector<std::string> ship_trail{"⠁", "⠂", "⠄", "⡀", "⢀", "⠠", "⠐", "⠈"};
|
||||||
std::atomic<int> ship_trail_index{0};
|
std::atomic<int> ship_trail_index{0};
|
||||||
auto job2 = [&p2, &ship_trail_index, &ship_trail]() {
|
auto job2 = [&p2, &ship_trail_index, &ship_trail]() {
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ class BlockProgressBar {
|
|||||||
using Settings = std::tuple<option::ForegroundColor, option::BarWidth, option::Start, option::End,
|
using Settings = std::tuple<option::ForegroundColor, option::BarWidth, option::Start, option::End,
|
||||||
option::PrefixText, option::PostfixText, option::ShowPercentage,
|
option::PrefixText, option::PostfixText, option::ShowPercentage,
|
||||||
option::ShowElapsedTime, option::ShowRemainingTime, option::Completed,
|
option::ShowElapsedTime, option::ShowRemainingTime, option::Completed,
|
||||||
option::SavedStartTime, option::MaxPostfixTextLen>;
|
option::SavedStartTime, option::MaxPostfixTextLen, option::FontStyles>;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
template <typename... Args,
|
template <typename... Args,
|
||||||
@@ -77,7 +77,9 @@ public:
|
|||||||
details::get<details::ProgressBarOption::saved_start_time>(
|
details::get<details::ProgressBarOption::saved_start_time>(
|
||||||
option::SavedStartTime{false}, std::forward<Args>(args)...),
|
option::SavedStartTime{false}, std::forward<Args>(args)...),
|
||||||
details::get<details::ProgressBarOption::max_postfix_text_len>(
|
details::get<details::ProgressBarOption::max_postfix_text_len>(
|
||||||
option::MaxPostfixTextLen{0}, std::forward<Args>(args)...)) {}
|
option::MaxPostfixTextLen{0}, std::forward<Args>(args)...),
|
||||||
|
details::get<details::ProgressBarOption::font_styles>(
|
||||||
|
option::FontStyles{std::vector<FontStyle>{}}, std::forward<Args>(args)...)) {}
|
||||||
|
|
||||||
template <typename T, details::ProgressBarOption id>
|
template <typename T, details::ProgressBarOption id>
|
||||||
void set_option(details::Setting<T, id> &&setting) {
|
void set_option(details::Setting<T, id> &&setting) {
|
||||||
@@ -190,6 +192,10 @@ private:
|
|||||||
|
|
||||||
if (get_value<details::ProgressBarOption::foreground_color>() != Color::unspecified)
|
if (get_value<details::ProgressBarOption::foreground_color>() != Color::unspecified)
|
||||||
details::set_stream_color(std::cout, get_value<details::ProgressBarOption::foreground_color>());
|
details::set_stream_color(std::cout, get_value<details::ProgressBarOption::foreground_color>());
|
||||||
|
|
||||||
|
for (auto &style : get_value<details::ProgressBarOption::font_styles>())
|
||||||
|
details::set_font_style(std::cout, style);
|
||||||
|
|
||||||
std::cout << get_value<details::ProgressBarOption::prefix_text>();
|
std::cout << get_value<details::ProgressBarOption::prefix_text>();
|
||||||
std::cout << get_value<details::ProgressBarOption::start>();
|
std::cout << get_value<details::ProgressBarOption::start>();
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <indicators/color.hpp>
|
#include <indicators/color.hpp>
|
||||||
|
#include <indicators/font_style.hpp>
|
||||||
#include <indicators/termcolor.hpp>
|
#include <indicators/termcolor.hpp>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
@@ -47,6 +48,37 @@ inline void set_stream_color(std::ostream &os, Color color) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void set_font_style(std::ostream &os, FontStyle style) {
|
||||||
|
switch (style) {
|
||||||
|
case FontStyle::bold:
|
||||||
|
os << termcolor::bold;
|
||||||
|
break;
|
||||||
|
case FontStyle::dark:
|
||||||
|
os << termcolor::dark;
|
||||||
|
break;
|
||||||
|
case FontStyle::italic:
|
||||||
|
os << termcolor::italic;
|
||||||
|
break;
|
||||||
|
case FontStyle::underline:
|
||||||
|
os << termcolor::underline;
|
||||||
|
break;
|
||||||
|
case FontStyle::blink:
|
||||||
|
os << termcolor::blink;
|
||||||
|
break;
|
||||||
|
case FontStyle::reverse:
|
||||||
|
os << termcolor::reverse;
|
||||||
|
break;
|
||||||
|
case FontStyle::concealed:
|
||||||
|
os << termcolor::concealed;
|
||||||
|
break;
|
||||||
|
case FontStyle::crossed:
|
||||||
|
os << termcolor::crossed;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
inline std::ostream &write_duration(std::ostream &os, std::chrono::nanoseconds ns) {
|
inline std::ostream &write_duration(std::ostream &os, std::chrono::nanoseconds ns) {
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace std::chrono;
|
using namespace std::chrono;
|
||||||
|
|||||||
33
include/indicators/font_style.hpp
Normal file
33
include/indicators/font_style.hpp
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
Activity Indicators for Modern C++
|
||||||
|
https://github.com/p-ranav/indica
|
||||||
|
|
||||||
|
Licensed under the MIT License <http://opensource.org/licenses/MIT>.
|
||||||
|
SPDX-License-Identifier: MIT
|
||||||
|
Copyright (c) 2019 Pranav Srinivas Kumar <pranav.srinivas.kumar@gmail.com>.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace indicators {
|
||||||
|
|
||||||
|
enum class FontStyle { bold, dark, italic, underline, blink, reverse, concealed, crossed };
|
||||||
|
|
||||||
|
}
|
||||||
@@ -50,7 +50,7 @@ class ProgressBar {
|
|||||||
option::End, option::Fill, option::Lead, option::Remainder,
|
option::End, option::Fill, option::Lead, option::Remainder,
|
||||||
option::MaxPostfixTextLen, option::Completed, option::ShowPercentage,
|
option::MaxPostfixTextLen, option::Completed, option::ShowPercentage,
|
||||||
option::ShowElapsedTime, option::ShowRemainingTime, option::SavedStartTime,
|
option::ShowElapsedTime, option::ShowRemainingTime, option::SavedStartTime,
|
||||||
option::ForegroundColor>;
|
option::ForegroundColor, option::FontStyles>;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
template <typename... Args,
|
template <typename... Args,
|
||||||
@@ -87,7 +87,9 @@ public:
|
|||||||
details::get<details::ProgressBarOption::saved_start_time>(
|
details::get<details::ProgressBarOption::saved_start_time>(
|
||||||
option::SavedStartTime{false}, std::forward<Args>(args)...),
|
option::SavedStartTime{false}, std::forward<Args>(args)...),
|
||||||
details::get<details::ProgressBarOption::foreground_color>(
|
details::get<details::ProgressBarOption::foreground_color>(
|
||||||
option::ForegroundColor{Color::unspecified}, std::forward<Args>(args)...)) {}
|
option::ForegroundColor{Color::unspecified}, std::forward<Args>(args)...),
|
||||||
|
details::get<details::ProgressBarOption::font_styles>(
|
||||||
|
option::FontStyles{std::vector<FontStyle>{}}, std::forward<Args>(args)...)) {}
|
||||||
|
|
||||||
template <typename T, details::ProgressBarOption id>
|
template <typename T, details::ProgressBarOption id>
|
||||||
void set_option(details::Setting<T, id> &&setting) {
|
void set_option(details::Setting<T, id> &&setting) {
|
||||||
@@ -203,6 +205,10 @@ private:
|
|||||||
|
|
||||||
if (get_value<details::ProgressBarOption::foreground_color>() != Color::unspecified)
|
if (get_value<details::ProgressBarOption::foreground_color>() != Color::unspecified)
|
||||||
details::set_stream_color(std::cout, get_value<details::ProgressBarOption::foreground_color>());
|
details::set_stream_color(std::cout, get_value<details::ProgressBarOption::foreground_color>());
|
||||||
|
|
||||||
|
for (auto &style : get_value<details::ProgressBarOption::font_styles>())
|
||||||
|
details::set_font_style(std::cout, style);
|
||||||
|
|
||||||
std::cout << get_value<details::ProgressBarOption::prefix_text>();
|
std::cout << get_value<details::ProgressBarOption::prefix_text>();
|
||||||
|
|
||||||
std::cout << get_value<details::ProgressBarOption::start>();
|
std::cout << get_value<details::ProgressBarOption::start>();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/*
|
/*
|
||||||
Activity Indicators for Modern C++
|
Activity Indicators for Modern C++
|
||||||
https://github.com/p-ranav/indicators
|
https://github.com/p-ranav/indicators
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ class ProgressSpinner {
|
|||||||
std::tuple<option::ForegroundColor, option::PrefixText, option::PostfixText,
|
std::tuple<option::ForegroundColor, option::PrefixText, option::PostfixText,
|
||||||
option::ShowPercentage, option::ShowElapsedTime, option::ShowRemainingTime,
|
option::ShowPercentage, option::ShowElapsedTime, option::ShowRemainingTime,
|
||||||
option::ShowSpinner, option::SavedStartTime, option::Completed,
|
option::ShowSpinner, option::SavedStartTime, option::Completed,
|
||||||
option::MaxPostfixTextLen, option::SpinnerStates>;
|
option::MaxPostfixTextLen, option::SpinnerStates, option::FontStyles>;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
template <typename... Args,
|
template <typename... Args,
|
||||||
@@ -80,7 +80,9 @@ public:
|
|||||||
details::get<details::ProgressBarOption::spinner_states>(
|
details::get<details::ProgressBarOption::spinner_states>(
|
||||||
option::SpinnerStates{std::vector<std::string>{"⠋", "⠙", "⠹", "⠸", "⠼", "⠴",
|
option::SpinnerStates{std::vector<std::string>{"⠋", "⠙", "⠹", "⠸", "⠼", "⠴",
|
||||||
"⠦", "⠧", "⠇", "⠏"}},
|
"⠦", "⠧", "⠇", "⠏"}},
|
||||||
std::forward<Args>(args)...)) {}
|
std::forward<Args>(args)...),
|
||||||
|
details::get<details::ProgressBarOption::font_styles>(
|
||||||
|
option::FontStyles{std::vector<FontStyle>{}}, std::forward<Args>(args)...)) {}
|
||||||
|
|
||||||
template <typename T, details::ProgressBarOption id>
|
template <typename T, details::ProgressBarOption id>
|
||||||
void set_option(details::Setting<T, id> &&setting) {
|
void set_option(details::Setting<T, id> &&setting) {
|
||||||
@@ -184,6 +186,10 @@ private:
|
|||||||
|
|
||||||
if (get_value<details::ProgressBarOption::foreground_color>() != Color::unspecified)
|
if (get_value<details::ProgressBarOption::foreground_color>() != Color::unspecified)
|
||||||
details::set_stream_color(std::cout, get_value<details::ProgressBarOption::foreground_color>());
|
details::set_stream_color(std::cout, get_value<details::ProgressBarOption::foreground_color>());
|
||||||
|
|
||||||
|
for (auto &style : get_value<details::ProgressBarOption::font_styles>())
|
||||||
|
details::set_font_style(std::cout, style);
|
||||||
|
|
||||||
std::cout << get_value<details::ProgressBarOption::prefix_text>();
|
std::cout << get_value<details::ProgressBarOption::prefix_text>();
|
||||||
if (get_value<details::ProgressBarOption::spinner_show>())
|
if (get_value<details::ProgressBarOption::spinner_show>())
|
||||||
std::cout << get_value<details::ProgressBarOption::spinner_states>()
|
std::cout << get_value<details::ProgressBarOption::spinner_states>()
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ SOFTWARE.
|
|||||||
|
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <indicators/color.hpp>
|
#include <indicators/color.hpp>
|
||||||
|
#include <indicators/font_style.hpp>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
@@ -87,6 +88,7 @@ enum class ProgressBarOption {
|
|||||||
foreground_color,
|
foreground_color,
|
||||||
spinner_show,
|
spinner_show,
|
||||||
spinner_states,
|
spinner_states,
|
||||||
|
font_styles,
|
||||||
hide_bar_when_complete
|
hide_bar_when_complete
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -200,5 +202,7 @@ using SpinnerStates =
|
|||||||
details::Setting<std::vector<std::string>, details::ProgressBarOption::spinner_states>;
|
details::Setting<std::vector<std::string>, details::ProgressBarOption::spinner_states>;
|
||||||
using HideBarWhenComplete =
|
using HideBarWhenComplete =
|
||||||
details::BooleanSetting<details::ProgressBarOption::hide_bar_when_complete>;
|
details::BooleanSetting<details::ProgressBarOption::hide_bar_when_complete>;
|
||||||
|
using FontStyles =
|
||||||
|
details::Setting<std::vector<FontStyle>, details::ProgressBarOption::font_styles>;
|
||||||
} // namespace option
|
} // namespace option
|
||||||
} // namespace indicators
|
} // namespace indicators
|
||||||
|
|||||||
@@ -7,7 +7,11 @@ int main() {
|
|||||||
// Hide cursor
|
// Hide cursor
|
||||||
std::cout << "\e[?25l";
|
std::cout << "\e[?25l";
|
||||||
|
|
||||||
indicators::BlockProgressBar bar{indicators::option::BarWidth{80}};
|
indicators::BlockProgressBar bar{
|
||||||
|
indicators::option::BarWidth{80},
|
||||||
|
indicators::option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}
|
||||||
|
};
|
||||||
|
|
||||||
// Update bar state
|
// Update bar state
|
||||||
auto progress = 0.0f;
|
auto progress = 0.0f;
|
||||||
|
|||||||
@@ -6,27 +6,39 @@ int main() {
|
|||||||
|
|
||||||
ProgressBar bar1{option::BarWidth{50}, option::ForegroundColor{Color::red},
|
ProgressBar bar1{option::BarWidth{50}, option::ForegroundColor{Color::red},
|
||||||
option::ShowElapsedTime{true}, option::ShowRemainingTime{true},
|
option::ShowElapsedTime{true}, option::ShowRemainingTime{true},
|
||||||
option::PrefixText{"5c90d4a2d1a8: Downloading "}};
|
option::PrefixText{"5c90d4a2d1a8: Downloading "},
|
||||||
|
indicators::option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}};
|
||||||
|
|
||||||
ProgressBar bar2{option::BarWidth{50}, option::ForegroundColor{Color::yellow},
|
ProgressBar bar2{option::BarWidth{50}, option::ForegroundColor{Color::yellow},
|
||||||
option::ShowElapsedTime{true}, option::ShowRemainingTime{true},
|
option::ShowElapsedTime{true}, option::ShowRemainingTime{true},
|
||||||
option::PrefixText{"22337bfd13a9: Downloading "}};
|
option::PrefixText{"22337bfd13a9: Downloading "},
|
||||||
|
indicators::option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}};
|
||||||
|
|
||||||
ProgressBar bar3{option::BarWidth{50}, option::ForegroundColor{Color::green},
|
ProgressBar bar3{option::BarWidth{50}, option::ForegroundColor{Color::green},
|
||||||
option::ShowElapsedTime{true}, option::ShowRemainingTime{true},
|
option::ShowElapsedTime{true}, option::ShowRemainingTime{true},
|
||||||
option::PrefixText{"10f26c680a34: Downloading "}};
|
option::PrefixText{"10f26c680a34: Downloading "},
|
||||||
|
indicators::option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}};
|
||||||
|
|
||||||
ProgressBar bar4{option::BarWidth{50}, option::ForegroundColor{Color::white},
|
ProgressBar bar4{option::BarWidth{50}, option::ForegroundColor{Color::white},
|
||||||
option::ShowElapsedTime{true}, option::ShowRemainingTime{true},
|
option::ShowElapsedTime{true}, option::ShowRemainingTime{true},
|
||||||
option::PrefixText{"6364e0d7a283: Downloading "}};
|
option::PrefixText{"6364e0d7a283: Downloading "},
|
||||||
|
indicators::option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}};
|
||||||
|
|
||||||
ProgressBar bar5{option::BarWidth{50}, option::ForegroundColor{Color::blue},
|
ProgressBar bar5{option::BarWidth{50}, option::ForegroundColor{Color::blue},
|
||||||
option::ShowElapsedTime{true}, option::ShowRemainingTime{true},
|
option::ShowElapsedTime{true}, option::ShowRemainingTime{true},
|
||||||
option::PrefixText{"ff1356ba118b: Downloading "}};
|
option::PrefixText{"ff1356ba118b: Downloading "},
|
||||||
|
indicators::option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}};
|
||||||
|
|
||||||
ProgressBar bar6{option::BarWidth{50}, option::ForegroundColor{Color::cyan},
|
ProgressBar bar6{option::BarWidth{50}, option::ForegroundColor{Color::cyan},
|
||||||
option::ShowElapsedTime{true}, option::ShowRemainingTime{true},
|
option::ShowElapsedTime{true}, option::ShowRemainingTime{true},
|
||||||
option::PrefixText{"5a17453338b4: Downloading "}};
|
option::PrefixText{"5a17453338b4: Downloading "},
|
||||||
|
indicators::option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}};
|
||||||
|
|
||||||
std::cout << termcolor::bold << termcolor::white << "Pulling image foo:bar/baz\n";
|
std::cout << termcolor::bold << termcolor::white << "Pulling image foo:bar/baz\n";
|
||||||
|
|
||||||
|
|||||||
@@ -5,15 +5,21 @@ int main() {
|
|||||||
using namespace indicators;
|
using namespace indicators;
|
||||||
BlockProgressBar bar1{option::BarWidth{50}, option::ForegroundColor{Color::yellow},
|
BlockProgressBar bar1{option::BarWidth{50}, option::ForegroundColor{Color::yellow},
|
||||||
option::ShowElapsedTime{true}, option::ShowRemainingTime{true},
|
option::ShowElapsedTime{true}, option::ShowRemainingTime{true},
|
||||||
option::PrefixText{"Progress Bar #1 "}};
|
option::PrefixText{"Progress Bar #1 "},
|
||||||
|
indicators::option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}};
|
||||||
|
|
||||||
BlockProgressBar bar2{option::BarWidth{50}, option::ForegroundColor{Color::cyan},
|
BlockProgressBar bar2{option::BarWidth{50}, option::ForegroundColor{Color::cyan},
|
||||||
option::ShowElapsedTime{true}, option::ShowRemainingTime{true},
|
option::ShowElapsedTime{true}, option::ShowRemainingTime{true},
|
||||||
option::PrefixText{"Progress Bar #2 "}};
|
option::PrefixText{"Progress Bar #2 "},
|
||||||
|
indicators::option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}};
|
||||||
|
|
||||||
BlockProgressBar bar3{option::BarWidth{50}, option::ForegroundColor{Color::red},
|
BlockProgressBar bar3{option::BarWidth{50}, option::ForegroundColor{Color::red},
|
||||||
option::ShowElapsedTime{true}, option::ShowRemainingTime{true},
|
option::ShowElapsedTime{true}, option::ShowRemainingTime{true},
|
||||||
option::PrefixText{"Progress Bar #3 "}};
|
option::PrefixText{"Progress Bar #3 "},
|
||||||
|
indicators::option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}};
|
||||||
|
|
||||||
indicators::MultiProgress<indicators::BlockProgressBar, 3> bars(bar1, bar2, bar3);
|
indicators::MultiProgress<indicators::BlockProgressBar, 3> bars(bar1, bar2, bar3);
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,9 @@ int main() {
|
|||||||
indicators::option::ForegroundColor{indicators::Color::yellow},
|
indicators::option::ForegroundColor{indicators::Color::yellow},
|
||||||
indicators::option::ShowElapsedTime{true},
|
indicators::option::ShowElapsedTime{true},
|
||||||
indicators::option::ShowRemainingTime{true},
|
indicators::option::ShowRemainingTime{true},
|
||||||
indicators::option::PrefixText{"Progress Bar #1 "}};
|
indicators::option::PrefixText{"Progress Bar #1 "},
|
||||||
|
indicators::option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}};
|
||||||
|
|
||||||
indicators::ProgressBar bar2{indicators::option::BarWidth{50},
|
indicators::ProgressBar bar2{indicators::option::BarWidth{50},
|
||||||
indicators::option::Start{"["},
|
indicators::option::Start{"["},
|
||||||
@@ -23,7 +25,9 @@ int main() {
|
|||||||
indicators::option::ForegroundColor{indicators::Color::cyan},
|
indicators::option::ForegroundColor{indicators::Color::cyan},
|
||||||
indicators::option::ShowElapsedTime{true},
|
indicators::option::ShowElapsedTime{true},
|
||||||
indicators::option::ShowRemainingTime{true},
|
indicators::option::ShowRemainingTime{true},
|
||||||
indicators::option::PrefixText{"Progress Bar #2 "}};
|
indicators::option::PrefixText{"Progress Bar #2 "},
|
||||||
|
indicators::option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}};
|
||||||
|
|
||||||
indicators::ProgressBar bar3{indicators::option::BarWidth{50},
|
indicators::ProgressBar bar3{indicators::option::BarWidth{50},
|
||||||
indicators::option::Start{"["},
|
indicators::option::Start{"["},
|
||||||
@@ -34,7 +38,9 @@ int main() {
|
|||||||
indicators::option::ForegroundColor{indicators::Color::red},
|
indicators::option::ForegroundColor{indicators::Color::red},
|
||||||
indicators::option::ShowElapsedTime{true},
|
indicators::option::ShowElapsedTime{true},
|
||||||
indicators::option::ShowRemainingTime{true},
|
indicators::option::ShowRemainingTime{true},
|
||||||
indicators::option::PrefixText{"Progress Bar #3 "}};
|
indicators::option::PrefixText{"Progress Bar #3 "},
|
||||||
|
indicators::option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}};
|
||||||
|
|
||||||
indicators::MultiProgress<indicators::ProgressBar, 3> bars(bar1, bar2, bar3);
|
indicators::MultiProgress<indicators::ProgressBar, 3> bars(bar1, bar2, bar3);
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ int main() {
|
|||||||
indicators::option::Remainder{"-"},
|
indicators::option::Remainder{"-"},
|
||||||
indicators::option::End{" ]"},
|
indicators::option::End{" ]"},
|
||||||
indicators::option::ForegroundColor{indicators::Color::yellow},
|
indicators::option::ForegroundColor{indicators::Color::yellow},
|
||||||
|
indicators::option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}
|
||||||
};
|
};
|
||||||
|
|
||||||
// As configured, the bar will look like this:
|
// As configured, the bar will look like this:
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ int main() {
|
|||||||
indicators::option::End{" ]"},
|
indicators::option::End{" ]"},
|
||||||
indicators::option::PostfixText{"Loading dependency 1/4"},
|
indicators::option::PostfixText{"Loading dependency 1/4"},
|
||||||
indicators::option::ForegroundColor{indicators::Color::cyan},
|
indicators::option::ForegroundColor{indicators::Color::cyan},
|
||||||
|
indicators::option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Update bar state
|
// Update bar state
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ int main() {
|
|||||||
indicators::option::End{" ]"},
|
indicators::option::End{" ]"},
|
||||||
indicators::option::PostfixText{"Getting started"},
|
indicators::option::PostfixText{"Getting started"},
|
||||||
indicators::option::ForegroundColor{indicators::Color::green},
|
indicators::option::ForegroundColor{indicators::Color::green},
|
||||||
|
indicators::option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Update bar state
|
// Update bar state
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ int main() {
|
|||||||
indicators::option::ForegroundColor{indicators::Color::yellow},
|
indicators::option::ForegroundColor{indicators::Color::yellow},
|
||||||
indicators::option::SpinnerStates{
|
indicators::option::SpinnerStates{
|
||||||
std::vector<std::string>{"⠈", "⠐", "⠠", "⢀", "⡀", "⠄", "⠂", "⠁"}},
|
std::vector<std::string>{"⠈", "⠐", "⠠", "⢀", "⡀", "⠄", "⠂", "⠁"}},
|
||||||
|
indicators::option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Update spinner state
|
// Update spinner state
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ int main() {
|
|||||||
indicators::option::ForegroundColor{indicators::Color::yellow},
|
indicators::option::ForegroundColor{indicators::Color::yellow},
|
||||||
indicators::option::ShowElapsedTime{true},
|
indicators::option::ShowElapsedTime{true},
|
||||||
indicators::option::ShowRemainingTime{true},
|
indicators::option::ShowRemainingTime{true},
|
||||||
|
indicators::option::FontStyles{
|
||||||
|
std::vector<indicators::FontStyle>{indicators::FontStyle::bold}}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Update bar state
|
// Update bar state
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ SOFTWARE.
|
|||||||
|
|
||||||
namespace indicators {
|
namespace indicators {
|
||||||
enum class Color { grey, red, green, yellow, blue, magenta, cyan, white };
|
enum class Color { grey, red, green, yellow, blue, magenta, cyan, white };
|
||||||
|
enum class FontStyle { bold, dark, italic, underline, blink, reverse, concealed, crossed };
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//!
|
//!
|
||||||
@@ -538,6 +540,37 @@ inline void set_stream_color(std::ostream &os, Color color) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void set_font_style(std::ostream &os, FontStyle style) {
|
||||||
|
switch (style) {
|
||||||
|
case FontStyle::bold:
|
||||||
|
os << termcolor::bold;
|
||||||
|
break;
|
||||||
|
case FontStyle::dark:
|
||||||
|
os << termcolor::dark;
|
||||||
|
break;
|
||||||
|
case FontStyle::italic:
|
||||||
|
os << termcolor::italic;
|
||||||
|
break;
|
||||||
|
case FontStyle::underline:
|
||||||
|
os << termcolor::underline;
|
||||||
|
break;
|
||||||
|
case FontStyle::blink:
|
||||||
|
os << termcolor::blink;
|
||||||
|
break;
|
||||||
|
case FontStyle::reverse:
|
||||||
|
os << termcolor::reverse;
|
||||||
|
break;
|
||||||
|
case FontStyle::concealed:
|
||||||
|
os << termcolor::concealed;
|
||||||
|
break;
|
||||||
|
case FontStyle::crossed:
|
||||||
|
os << termcolor::crossed;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
inline std::ostream &write_duration(std::ostream &os, std::chrono::nanoseconds ns) {
|
inline std::ostream &write_duration(std::ostream &os, std::chrono::nanoseconds ns) {
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace std::chrono;
|
using namespace std::chrono;
|
||||||
@@ -675,6 +708,7 @@ enum class ProgressBarOption {
|
|||||||
foreground_color,
|
foreground_color,
|
||||||
spinner_show,
|
spinner_show,
|
||||||
spinner_states,
|
spinner_states,
|
||||||
|
font_styles,
|
||||||
hide_bar_when_complete
|
hide_bar_when_complete
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -788,6 +822,8 @@ using SpinnerStates =
|
|||||||
details::Setting<std::vector<std::string>, details::ProgressBarOption::spinner_states>;
|
details::Setting<std::vector<std::string>, details::ProgressBarOption::spinner_states>;
|
||||||
using HideBarWhenComplete =
|
using HideBarWhenComplete =
|
||||||
details::BooleanSetting<details::ProgressBarOption::hide_bar_when_complete>;
|
details::BooleanSetting<details::ProgressBarOption::hide_bar_when_complete>;
|
||||||
|
using FontStyles =
|
||||||
|
details::Setting<std::vector<FontStyle>, details::ProgressBarOption::font_styles>;
|
||||||
} // namespace option
|
} // namespace option
|
||||||
} // namespace indicators
|
} // namespace indicators
|
||||||
|
|
||||||
@@ -803,7 +839,7 @@ class ProgressBar {
|
|||||||
option::End, option::Fill, option::Lead, option::Remainder,
|
option::End, option::Fill, option::Lead, option::Remainder,
|
||||||
option::MaxPostfixTextLen, option::Completed, option::ShowPercentage,
|
option::MaxPostfixTextLen, option::Completed, option::ShowPercentage,
|
||||||
option::ShowElapsedTime, option::ShowRemainingTime, option::SavedStartTime,
|
option::ShowElapsedTime, option::ShowRemainingTime, option::SavedStartTime,
|
||||||
option::ForegroundColor>;
|
option::ForegroundColor, option::FontStyles>;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
template <typename... Args,
|
template <typename... Args,
|
||||||
@@ -840,7 +876,9 @@ public:
|
|||||||
details::get<details::ProgressBarOption::saved_start_time>(
|
details::get<details::ProgressBarOption::saved_start_time>(
|
||||||
option::SavedStartTime{false}, std::forward<Args>(args)...),
|
option::SavedStartTime{false}, std::forward<Args>(args)...),
|
||||||
details::get<details::ProgressBarOption::foreground_color>(
|
details::get<details::ProgressBarOption::foreground_color>(
|
||||||
option::ForegroundColor{Color::white}, std::forward<Args>(args)...)) {}
|
option::ForegroundColor{Color::unspecified}, std::forward<Args>(args)...),
|
||||||
|
details::get<details::ProgressBarOption::font_styles>(
|
||||||
|
option::FontStyles{std::vector<FontStyle>{}}, std::forward<Args>(args)...)) {}
|
||||||
|
|
||||||
template <typename T, details::ProgressBarOption id>
|
template <typename T, details::ProgressBarOption id>
|
||||||
void set_option(details::Setting<T, id> &&setting) {
|
void set_option(details::Setting<T, id> &&setting) {
|
||||||
@@ -956,6 +994,10 @@ private:
|
|||||||
|
|
||||||
std::cout << termcolor::bold;
|
std::cout << termcolor::bold;
|
||||||
details::set_stream_color(std::cout, get_value<details::ProgressBarOption::foreground_color>());
|
details::set_stream_color(std::cout, get_value<details::ProgressBarOption::foreground_color>());
|
||||||
|
|
||||||
|
for (auto &style : get_value<details::ProgressBarOption::font_styles>())
|
||||||
|
details::set_font_style(std::cout, style);
|
||||||
|
|
||||||
std::cout << get_value<details::ProgressBarOption::prefix_text>();
|
std::cout << get_value<details::ProgressBarOption::prefix_text>();
|
||||||
|
|
||||||
std::cout << get_value<details::ProgressBarOption::start>();
|
std::cout << get_value<details::ProgressBarOption::start>();
|
||||||
@@ -1020,7 +1062,7 @@ class BlockProgressBar {
|
|||||||
using Settings = std::tuple<option::ForegroundColor, option::BarWidth, option::Start, option::End,
|
using Settings = std::tuple<option::ForegroundColor, option::BarWidth, option::Start, option::End,
|
||||||
option::PrefixText, option::PostfixText, option::ShowPercentage,
|
option::PrefixText, option::PostfixText, option::ShowPercentage,
|
||||||
option::ShowElapsedTime, option::ShowRemainingTime, option::Completed,
|
option::ShowElapsedTime, option::ShowRemainingTime, option::Completed,
|
||||||
option::SavedStartTime, option::MaxPostfixTextLen>;
|
option::SavedStartTime, option::MaxPostfixTextLen, option::FontStyles>;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
template <typename... Args,
|
template <typename... Args,
|
||||||
@@ -1029,7 +1071,7 @@ public:
|
|||||||
void *>::type = nullptr>
|
void *>::type = nullptr>
|
||||||
explicit BlockProgressBar(Args &&... args)
|
explicit BlockProgressBar(Args &&... args)
|
||||||
: settings_(details::get<details::ProgressBarOption::foreground_color>(
|
: settings_(details::get<details::ProgressBarOption::foreground_color>(
|
||||||
option::ForegroundColor{Color::white}, std::forward<Args>(args)...),
|
option::ForegroundColor{Color::unspecified}, std::forward<Args>(args)...),
|
||||||
details::get<details::ProgressBarOption::bar_width>(option::BarWidth{100},
|
details::get<details::ProgressBarOption::bar_width>(option::BarWidth{100},
|
||||||
std::forward<Args>(args)...),
|
std::forward<Args>(args)...),
|
||||||
details::get<details::ProgressBarOption::start>(option::Start{"["},
|
details::get<details::ProgressBarOption::start>(option::Start{"["},
|
||||||
@@ -1051,7 +1093,9 @@ public:
|
|||||||
details::get<details::ProgressBarOption::saved_start_time>(
|
details::get<details::ProgressBarOption::saved_start_time>(
|
||||||
option::SavedStartTime{false}, std::forward<Args>(args)...),
|
option::SavedStartTime{false}, std::forward<Args>(args)...),
|
||||||
details::get<details::ProgressBarOption::max_postfix_text_len>(
|
details::get<details::ProgressBarOption::max_postfix_text_len>(
|
||||||
option::MaxPostfixTextLen{0}, std::forward<Args>(args)...)) {}
|
option::MaxPostfixTextLen{0}, std::forward<Args>(args)...),
|
||||||
|
details::get<details::ProgressBarOption::font_styles>(
|
||||||
|
option::FontStyles{std::vector<FontStyle>{}}, std::forward<Args>(args)...)) {}
|
||||||
|
|
||||||
template <typename T, details::ProgressBarOption id>
|
template <typename T, details::ProgressBarOption id>
|
||||||
void set_option(details::Setting<T, id> &&setting) {
|
void set_option(details::Setting<T, id> &&setting) {
|
||||||
@@ -1164,6 +1208,10 @@ private:
|
|||||||
|
|
||||||
std::cout << termcolor::bold;
|
std::cout << termcolor::bold;
|
||||||
details::set_stream_color(std::cout, get_value<details::ProgressBarOption::foreground_color>());
|
details::set_stream_color(std::cout, get_value<details::ProgressBarOption::foreground_color>());
|
||||||
|
|
||||||
|
for (auto &style : get_value<details::ProgressBarOption::font_styles>())
|
||||||
|
details::set_font_style(std::cout, style);
|
||||||
|
|
||||||
std::cout << get_value<details::ProgressBarOption::prefix_text>();
|
std::cout << get_value<details::ProgressBarOption::prefix_text>();
|
||||||
std::cout << get_value<details::ProgressBarOption::start>();
|
std::cout << get_value<details::ProgressBarOption::start>();
|
||||||
|
|
||||||
@@ -1224,7 +1272,7 @@ class ProgressSpinner {
|
|||||||
std::tuple<option::ForegroundColor, option::PrefixText, option::PostfixText,
|
std::tuple<option::ForegroundColor, option::PrefixText, option::PostfixText,
|
||||||
option::ShowPercentage, option::ShowElapsedTime, option::ShowRemainingTime,
|
option::ShowPercentage, option::ShowElapsedTime, option::ShowRemainingTime,
|
||||||
option::ShowSpinner, option::SavedStartTime, option::Completed,
|
option::ShowSpinner, option::SavedStartTime, option::Completed,
|
||||||
option::MaxPostfixTextLen, option::SpinnerStates>;
|
option::MaxPostfixTextLen, option::SpinnerStates, option::FontStyles>;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
template <typename... Args,
|
template <typename... Args,
|
||||||
@@ -1233,7 +1281,7 @@ public:
|
|||||||
void *>::type = nullptr>
|
void *>::type = nullptr>
|
||||||
explicit ProgressSpinner(Args &&... args)
|
explicit ProgressSpinner(Args &&... args)
|
||||||
: settings_(details::get<details::ProgressBarOption::foreground_color>(
|
: settings_(details::get<details::ProgressBarOption::foreground_color>(
|
||||||
option::ForegroundColor{Color::white}, std::forward<Args>(args)...),
|
option::ForegroundColor{Color::unspecified}, std::forward<Args>(args)...),
|
||||||
details::get<details::ProgressBarOption::prefix_text>(
|
details::get<details::ProgressBarOption::prefix_text>(
|
||||||
option::PrefixText{}, std::forward<Args>(args)...),
|
option::PrefixText{}, std::forward<Args>(args)...),
|
||||||
details::get<details::ProgressBarOption::postfix_text>(
|
details::get<details::ProgressBarOption::postfix_text>(
|
||||||
@@ -1255,7 +1303,9 @@ public:
|
|||||||
details::get<details::ProgressBarOption::spinner_states>(
|
details::get<details::ProgressBarOption::spinner_states>(
|
||||||
option::SpinnerStates{std::vector<std::string>{"⠋", "⠙", "⠹", "⠸", "⠼", "⠴",
|
option::SpinnerStates{std::vector<std::string>{"⠋", "⠙", "⠹", "⠸", "⠼", "⠴",
|
||||||
"⠦", "⠧", "⠇", "⠏"}},
|
"⠦", "⠧", "⠇", "⠏"}},
|
||||||
std::forward<Args>(args)...)) {}
|
std::forward<Args>(args)...),
|
||||||
|
details::get<details::ProgressBarOption::font_styles>(
|
||||||
|
option::FontStyles{std::vector<FontStyle>{}}, std::forward<Args>(args)...)) {}
|
||||||
|
|
||||||
template <typename T, details::ProgressBarOption id>
|
template <typename T, details::ProgressBarOption id>
|
||||||
void set_option(details::Setting<T, id> &&setting) {
|
void set_option(details::Setting<T, id> &&setting) {
|
||||||
@@ -1359,6 +1409,10 @@ private:
|
|||||||
|
|
||||||
std::cout << termcolor::bold;
|
std::cout << termcolor::bold;
|
||||||
details::set_stream_color(std::cout, get_value<details::ProgressBarOption::foreground_color>());
|
details::set_stream_color(std::cout, get_value<details::ProgressBarOption::foreground_color>());
|
||||||
|
|
||||||
|
for (auto &style : get_value<details::ProgressBarOption::font_styles>())
|
||||||
|
details::set_font_style(std::cout, style);
|
||||||
|
|
||||||
std::cout << get_value<details::ProgressBarOption::prefix_text>();
|
std::cout << get_value<details::ProgressBarOption::prefix_text>();
|
||||||
if (get_value<details::ProgressBarOption::spinner_show>())
|
if (get_value<details::ProgressBarOption::spinner_show>())
|
||||||
std::cout << get_value<details::ProgressBarOption::spinner_states>()
|
std::cout << get_value<details::ProgressBarOption::spinner_states>()
|
||||||
|
|||||||
Reference in New Issue
Block a user