mirror of
https://github.com/p-ranav/indicators.git
synced 2025-12-16 04:18:51 +08:00
Remove code duplication: extract set_stream_color function
This commit is contained in:
@@ -25,6 +25,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <indicators/details/stream_helper.hpp>
|
||||
|
||||
#define NOMINMAX
|
||||
#include <algorithm>
|
||||
#include <atomic>
|
||||
@@ -180,32 +183,7 @@ private:
|
||||
auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(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;
|
||||
|
||||
|
||||
43
include/indicators/details/stream_helper.hpp
Normal file
43
include/indicators/details/stream_helper.hpp
Normal file
@@ -0,0 +1,43 @@
|
||||
#pragma once
|
||||
|
||||
#include <indicators/color.hpp>
|
||||
|
||||
#include <ostream>
|
||||
#include <cassert>
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -25,6 +25,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <indicators/details/stream_helper.hpp>
|
||||
|
||||
#define NOMINMAX
|
||||
#include <algorithm>
|
||||
#include <atomic>
|
||||
@@ -194,32 +197,7 @@ private:
|
||||
auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(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<size_t>(_progress * static_cast<float>(_bar_width) / 100.0);
|
||||
|
||||
@@ -25,6 +25,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <indicators/details/stream_helper.hpp>
|
||||
|
||||
#define NOMINMAX
|
||||
#include <algorithm>
|
||||
#include <atomic>
|
||||
@@ -162,32 +165,7 @@ private:
|
||||
auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(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()];
|
||||
|
||||
Reference in New Issue
Block a user