/*
 * Color library for C++
 * Use like this;
 * std::cout << RED("This is in red!");
 * Some of the colors are just here for the sake of completeness (e.g. BBLACK)
 * In general, these have "normal", dark, and light versions.
 */

#include<string>

#define BLACK(X)	(std::string("\x1b[0;30m") + std::string(X) + std::string("\x1b[1;0m"))
#define RED(X)		(std::string("\x1b[0;31m") + std::string(X) + std::string("\x1b[1;0m"))
#define GREEN(X)	(std::string("\x1b[0;32m") + std::string(X) + std::string("\x1b[1;0m"))
#define YELLOW(X)	(std::string("\x1b[0;33m") + std::string(X) + std::string("\x1b[1;0m"))
#define BLUE(X)	(std::string("\x1b[0;34m") + std::string(X) + std::string("\x1b[1;0m"))
#define PURPLE(X)	(std::string("\x1b[0;35m") + std::string(X) + std::string("\x1b[1;0m"))  
#define CYAN(X)	(std::string("\x1b[0;36m") + std::string(X) + std::string("\x1b[1;0m"))
#define WHITE(X)	(std::string("\x1b[0;37m") + std::string(X) + std::string("\x1b[1;0m"))

#define BBLACK(X)		(std::string("\x1b[1;30m") + std::string(X) + std::string("\x1b[1;0m"))	
#define BRED(X)		(std::string("\x1b[1;31m") + std::string(X) + std::string("\x1b[1;0m"))
#define BGREEN(X)		(std::string("\x1b[1;32m") + std::string(X) + std::string("\x1b[1;0m"))	
#define BYELLOW(X)	(std::string("\x1b[1;33m") + std::string(X) + std::string("\x1b[1;0m"))	
#define BBLUE(X)		(std::string("\x1b[1;34m") + std::string(X) + std::string("\x1b[1;0m"))
#define BPURPLE(X)	(std::string("\x1b[1;35m") + std::string(X) + std::string("\x1b[1;0m"))	
#define BCYAN(X)		(std::string("\x1b[1;36m") + std::string(X) + std::string("\x1b[1;0m"))
#define BWHITE(X)		(std::string("\x1b[1;37m") + std::string(X) + std::string("\x1b[1;0m"))	
#define DBLACK(X)		(std::string("\x1b[2;30m") + std::string(X) + std::string("\x1b[1;0m"))	
#define DRED(X)		(std::string("\x1b[2;31m") + std::string(X) + std::string("\x1b[1;0m"))
#define DGREEN(X)		(std::string("\x1b[2;32m") + std::string(X) + std::string("\x1b[1;0m"))
#define DYELLOW(X)	(std::string("\x1b[2;33m") + std::string(X) + std::string("\x1b[1;0m"))
#define DBLUE(X)		(std::string("\x1b[2;34m") + std::string(X) + std::string("\x1b[1;0m"))
#define DPURPLE(X)	(std::string("\x1b[2;35m") + std::string(X) + std::string("\x1b[1;0m"))
#define DCYAN(X)		(std::string("\x1b[2;36m") + std::string(X) + std::string("\x1b[1;0m"))
#define DWHITE(X)		(std::string("\x1b[2;37m") + std::string(X) + std::string("\x1b[1;0m"))
