-
Notifications
You must be signed in to change notification settings - Fork 0
/
ColorConsole.h
88 lines (80 loc) · 2.51 KB
/
ColorConsole.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/*
* ColorConsole.h
*
* Created on: Mar 2, 2018
* Author: jakefolsom
*/
#ifndef COLORCONSOLE_H_
#define COLORCONSOLE_H_
#if defined(__APPLE__)
#include <string>
std::string RESET = "\033[0m";
std::string BLACK = "\033[30m"; /* Black */
std::string RED = "\033[31m"; /* Red */
std::string GREEN = "\033[32m"; /* Green */
std::string YELLOW = "\033[33m";/* Yellow */
std::string BLUE = "\033[34m"; /* Blue */
std::string MAGENTA = "\033[35m"; /* Magenta */
std::string CYAN = "\033[36m"; /* Cyan */
std::string WHITE = "\033[37m"; /* White */
std::string BOLDBLACK = "\033[1m\033[30m";/* Bold Black */
std::string BOLDRED = "\033[1m\033[31m";/* Bold Red */
std::string BOLDGREEN ="\033[1m\033[32m";/* Bold Green */
std::string BOLDYELLOW = "\033[1m\033[33m"; /* Bold Yellow */
std::string BOLDBLUE = "\033[1m\033[34m"; /* Bold Blue */
std::string BOLDMAGENTA = "\033[1m\033[35m"; /* Bold Magenta */
std::string BOLDCYAN = "\033[1m\033[36m"; /* Bold Cyan */
std::string BOLDWHITE = "\033[1m\033[37m";
#endif
#if defined(_WIN32)
#include <iostream>
#include <windows.h>
inline std::ostream& BLUE(std::ostream &s)
{
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hStdout, FOREGROUND_BLUE
|FOREGROUND_GREEN|FOREGROUND_INTENSITY);
return s;
}
inline std::ostream& RED(std::ostream &s)
{
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hStdout,
FOREGROUND_RED|FOREGROUND_INTENSITY);
return s;
}
inline std::ostream& GREEN(std::ostream &s)
{
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hStdout,
FOREGROUND_GREEN|FOREGROUND_INTENSITY);
return s;
}
inline std::ostream& YELLOW(std::ostream &s)
{
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hStdout,
FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTENSITY);
return s;
}
inline std::ostream& WHITE(std::ostream &s)
{
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hStdout,
FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
return s;
}
struct color {
color(WORD attribute):m_color(attribute){};
WORD m_color;
};
template <class _Elem, class _Traits>
std::basic_ostream<_Elem,_Traits>&
operator<<(std::basic_ostream<_Elem,_Traits>& i, color& c)
{
HANDLE hStdout=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hStdout,c.m_color);
return i;
}
#endif
#endif /* COLORCONSOLE_H_ */