@@ -123,18 +123,67 @@ namespace DFHack
123123 class DFHACK_EXPORT Console : public color_ostream
124124 {
125125 public:
126+ const char * ANSI_CLS = " \033 [2J" ;
127+ const char * ANSI_BLACK = " \033 [22;30m" ;
128+ const char * ANSI_RED = " \033 [22;31m" ;
129+ const char * ANSI_GREEN = " \033 [22;32m" ;
130+ const char * ANSI_BROWN = " \033 [22;33m" ;
131+ const char * ANSI_BLUE = " \033 [22;34m" ;
132+ const char * ANSI_MAGENTA = " \033 [22;35m" ;
133+ const char * ANSI_CYAN = " \033 [22;36m" ;
134+ const char * ANSI_GREY = " \033 [22;37m" ;
135+ const char * ANSI_DARKGREY = " \033 [01;30m" ;
136+ const char * ANSI_LIGHTRED = " \033 [01;31m" ;
137+ const char * ANSI_LIGHTGREEN = " \033 [01;32m" ;
138+ const char * ANSI_YELLOW = " \033 [01;33m" ;
139+ const char * ANSI_LIGHTBLUE = " \033 [01;34m" ;
140+ const char * ANSI_LIGHTMAGENTA = " \033 [01;35m" ;
141+ const char * ANSI_LIGHTCYAN = " \033 [01;36m" ;
142+ const char * ANSI_WHITE = " \033 [01;37m" ;
143+ const char * RESETCOLOR = " \033 [0m" ;
144+
145+
126146 enum class Type {
127147 Posix,
128148 SDL,
129149 Windows,
130150 DUMMY
131151 };
132152
153+ const char * getANSIColor (const int c)
154+ {
155+ switch (c)
156+ {
157+ case -1 : return RESETCOLOR; // HACK! :P
158+ case 0 : return ANSI_BLACK;
159+ case 1 : return ANSI_BLUE; // non-ANSI
160+ case 2 : return ANSI_GREEN;
161+ case 3 : return ANSI_CYAN; // non-ANSI
162+ case 4 : return ANSI_RED; // non-ANSI
163+ case 5 : return ANSI_MAGENTA;
164+ case 6 : return ANSI_BROWN;
165+ case 7 : return ANSI_GREY;
166+ case 8 : return ANSI_DARKGREY;
167+ case 9 : return ANSI_LIGHTBLUE; // non-ANSI
168+ case 10 : return ANSI_LIGHTGREEN;
169+ case 11 : return ANSI_LIGHTCYAN; // non-ANSI;
170+ case 12 : return ANSI_LIGHTRED; // non-ANSI;
171+ case 13 : return ANSI_LIGHTMAGENTA;
172+ case 14 : return ANSI_YELLOW; // non-ANSI
173+ case 15 : return ANSI_WHITE;
174+ default : return " " ;
175+ }
176+ }
177+
133178 protected:
134179 Type con_type{Type::DUMMY};
135180
136181 virtual void begin_batch () {};
137- virtual void add_text (color_value color, const std::string &text) {};
182+ virtual void add_text (color_value color, const std::string &text) {
183+ std::cout << getANSIColor (color);
184+ std::cout << text;
185+ std::cout << RESETCOLOR;
186+ };
138187 virtual void end_batch () {};
139188 virtual void flush_proxy () {};
140189
0 commit comments