diff --git a/include/indicators/block_progress_bar.hpp b/include/indicators/block_progress_bar.hpp index deb6f58..d164718 100644 --- a/include/indicators/block_progress_bar.hpp +++ b/include/indicators/block_progress_bar.hpp @@ -25,6 +25,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #pragma once + +#include + #define NOMINMAX #include #include @@ -180,32 +183,7 @@ private: auto elapsed = std::chrono::duration_cast(now - _start_time_point); std::cout << termcolor::bold; - switch (_foreground_color) { - case Color::GREY: - std::cout << termcolor::grey; - break; - case Color::RED: - std::cout << termcolor::red; - break; - case Color::GREEN: - std::cout << termcolor::green; - break; - case Color::YELLOW: - std::cout << termcolor::yellow; - break; - case Color::BLUE: - std::cout << termcolor::blue; - break; - case Color::MAGENTA: - std::cout << termcolor::magenta; - break; - case Color::CYAN: - std::cout << termcolor::cyan; - break; - case Color::WHITE: - std::cout << termcolor::white; - break; - } + details::set_stream_color(std::cout, _foreground_color); std::cout << _prefix_text; std::cout << _start; diff --git a/include/indicators/details/stream_helper.hpp b/include/indicators/details/stream_helper.hpp new file mode 100644 index 0000000..d0b1fe0 --- /dev/null +++ b/include/indicators/details/stream_helper.hpp @@ -0,0 +1,43 @@ +#pragma once + +#include + +#include +#include + +namespace indicators { +namespace details { + +inline void set_stream_color(std::ostream& stream, Color color) { + switch (color) { + case Color::GREY: + stream << termcolor::grey; + break; + case Color::RED: + stream << termcolor::red; + break; + case Color::GREEN: + stream << termcolor::green; + break; + case Color::YELLOW: + stream << termcolor::yellow; + break; + case Color::BLUE: + stream << termcolor::blue; + break; + case Color::MAGENTA: + stream << termcolor::magenta; + break; + case Color::CYAN: + stream << termcolor::cyan; + break; + case Color::WHITE: + stream << termcolor::white; + break; + default: + assert(false); + } +} + +} +} \ No newline at end of file diff --git a/include/indicators/progress_bar.hpp b/include/indicators/progress_bar.hpp index 27a903f..12d417d 100644 --- a/include/indicators/progress_bar.hpp +++ b/include/indicators/progress_bar.hpp @@ -25,6 +25,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #pragma once + +#include + #define NOMINMAX #include #include @@ -194,32 +197,7 @@ private: auto elapsed = std::chrono::duration_cast(now - _start_time_point); std::cout << termcolor::bold; - switch (_foreground_color) { - case Color::GREY: - std::cout << termcolor::grey; - break; - case Color::RED: - std::cout << termcolor::red; - break; - case Color::GREEN: - std::cout << termcolor::green; - break; - case Color::YELLOW: - std::cout << termcolor::yellow; - break; - case Color::BLUE: - std::cout << termcolor::blue; - break; - case Color::MAGENTA: - std::cout << termcolor::magenta; - break; - case Color::CYAN: - std::cout << termcolor::cyan; - break; - case Color::WHITE: - std::cout << termcolor::white; - break; - } + details::set_stream_color(std::cout, _foreground_color); std::cout << _prefix_text; std::cout << _start; auto pos = static_cast(_progress * static_cast(_bar_width) / 100.0); diff --git a/include/indicators/progress_spinner.hpp b/include/indicators/progress_spinner.hpp index cb9247b..214746c 100644 --- a/include/indicators/progress_spinner.hpp +++ b/include/indicators/progress_spinner.hpp @@ -25,6 +25,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #pragma once + +#include + #define NOMINMAX #include #include @@ -162,32 +165,7 @@ private: auto elapsed = std::chrono::duration_cast(now - _start_time_point); std::cout << termcolor::bold; - switch (_foreground_color) { - case Color::GREY: - std::cout << termcolor::grey; - break; - case Color::RED: - std::cout << termcolor::red; - break; - case Color::GREEN: - std::cout << termcolor::green; - break; - case Color::YELLOW: - std::cout << termcolor::yellow; - break; - case Color::BLUE: - std::cout << termcolor::blue; - break; - case Color::MAGENTA: - std::cout << termcolor::magenta; - break; - case Color::CYAN: - std::cout << termcolor::cyan; - break; - case Color::WHITE: - std::cout << termcolor::white; - break; - } + details::set_stream_color(std::cout, _foreground_color); std::cout << _prefix_text; if (_show_spinner) std::cout << _states[_index % _states.size()];