added color support for windows
This commit is contained in:
parent
326ade7698
commit
51ceef3dee
21
format.cc
21
format.cc
@ -35,13 +35,6 @@
|
||||
#include <cmath>
|
||||
#include <cstdarg>
|
||||
|
||||
#ifdef _WIN32
|
||||
# ifdef __MINGW32__
|
||||
# include <cstring>
|
||||
# endif
|
||||
# include <windows.h>
|
||||
#endif
|
||||
|
||||
using fmt::internal::Arg;
|
||||
|
||||
// Check if exceptions are disabled.
|
||||
@ -119,7 +112,11 @@ struct IntChecker<true> {
|
||||
}
|
||||
};
|
||||
|
||||
const char RESET_COLOR[] = "\x1b[0m";
|
||||
#ifdef _WIN32
|
||||
const char RESET_COLOR = FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE;
|
||||
#else
|
||||
const char RESET_COLOR[] = "\x1b[0m";
|
||||
#endif
|
||||
|
||||
typedef void (*FormatFunc)(fmt::Writer &, int, fmt::StringRef);
|
||||
|
||||
@ -1098,11 +1095,19 @@ FMT_FUNC void fmt::print(std::ostream &os, StringRef format_str, ArgList args) {
|
||||
}
|
||||
|
||||
FMT_FUNC void fmt::print_colored(Color c, StringRef format, ArgList args) {
|
||||
#ifdef _WIN32
|
||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c);
|
||||
#else
|
||||
char escape[] = "\x1b[30m";
|
||||
escape[3] = '0' + static_cast<char>(c);
|
||||
std::fputs(escape, stdout);
|
||||
#endif
|
||||
print(format, args);
|
||||
#ifdef _WIN32
|
||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), RESET_COLOR);
|
||||
#else
|
||||
std::fputs(RESET_COLOR, stdout);
|
||||
#endif
|
||||
}
|
||||
|
||||
FMT_FUNC int fmt::fprintf(std::FILE *f, StringRef format, ArgList args) {
|
||||
|
25
format.h
25
format.h
@ -40,6 +40,15 @@
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
|
||||
#ifdef _WIN32
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# ifdef __MINGW32__
|
||||
# include <cstring>
|
||||
# endif
|
||||
# include <windows.h>
|
||||
# undef ERROR
|
||||
#endif
|
||||
|
||||
#if _SECURE_SCL
|
||||
# include <iterator>
|
||||
#endif
|
||||
@ -2154,7 +2163,21 @@ void report_windows_error(int error_code, StringRef message) FMT_NOEXCEPT(true);
|
||||
|
||||
#endif
|
||||
|
||||
enum Color { BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE };
|
||||
#ifdef _WIN32
|
||||
enum Color : uint8_t
|
||||
{
|
||||
BLACK = 0,
|
||||
RED = FOREGROUND_RED | FOREGROUND_INTENSITY,
|
||||
GREEN = FOREGROUND_GREEN | FOREGROUND_INTENSITY,
|
||||
YELLOW = FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY,
|
||||
BLUE = FOREGROUND_BLUE | FOREGROUND_INTENSITY,
|
||||
MAGENTA = FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY,
|
||||
CYAN = FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE,
|
||||
WHITE = FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY
|
||||
};
|
||||
#else
|
||||
enum Color : uint8_t { BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE };
|
||||
#endif
|
||||
|
||||
/**
|
||||
Formats a string and prints it to stdout using ANSI escape sequences
|
||||
|
Loading…
Reference in New Issue
Block a user