+#ifndef COLOR_H
+#define COLOR_H
+
+//
+//taken from
+//http://www.velocityreviews.com/forums/t279115-design-question-a-little-c-header-for-colorizing-text-in-linux-comments-ideas.html
+
+#include <iostream>
+using namespace std;
+
+enum ColorName
+{
+ black,
+ red,
+ green,
+ brown,
+ blue,
+ magenta,
+ cyan,
+ gray,
+
+ darkgray,
+ lightred,
+ lightgreen,
+ yellow,
+ lightblue,
+ lightmagenta,
+ lightcyan,
+ white
+};
+
+
+struct color
+{
+ color(ColorName f = white, ColorName b = black) : fore(f), back(b) {}
+
+ ColorName fore;
+ ColorName back;
+};
+
+
+inline ostream& operator<<(ostream& o, const color& c)
+{
+ o << "\033[";
+
+ if(c.back != black) {
+ o << "4" << c.back << ";";
+ }
+ else {
+ o << "0;";
+ }
+
+ if(c.fore > gray) {
+ // bold color
+ o << "1;3" << c.fore - gray - 1;
+ }
+ else {
+ o << "0;3" << c.fore ;
+ }
+
+ return o << "m";
+
+}
+
+#endif