package util.color;
import util.bit.Bit;
public class Color {
// VT100 colors
public static final int BIT_DEFAULT = Bit.BIT0;
public static final int BIT_BOLD = Bit.BIT1;
public static final int BIT_UNDERLINED = Bit.BIT2;
public static final int BIT_BLINK = Bit.BIT3;
public static final int BIT_INVERSE = Bit.BIT4;
public static final int BIT_INVISIBLE = Bit.BIT5;
public static final int BIT_NORMAL = Bit.BIT6;
public static final int BIT_NOT_UNDERLINED = Bit.BIT7;
public static final int BIT_STEADY = Bit.BIT8;
public static final int BIT_POSITIVE = Bit.BIT9;
public static final int BIT_VISIBLE = Bit.BIT10;
public static final int BIT_FG_BLACK = Bit.BIT11;
public static final int BIT_FG_RED = Bit.BIT12;
public static final int BIT_FG_GREEN = Bit.BIT13;
public static final int BIT_FG_YELLOW = Bit.BIT14;
public static final int BIT_FG_BLUE = Bit.BIT15;
public static final int BIT_FG_MAGENTA = Bit.BIT16;
public static final int BIT_FG_CYAN = Bit.BIT17;
public static final int BIT_FG_WHITE = Bit.BIT18;
public static final int BIT_FG_DEFAULT = Bit.BIT19;
public static final int BIT_BG_BLACK = Bit.BIT20;
public static final int BIT_BG_RED = Bit.BIT21;
public static final int BIT_BG_GREEN = Bit.BIT22;
public static final int BIT_BG_YELLOW = Bit.BIT23;
public static final int BIT_BG_BLUE = Bit.BIT24;
public static final int BIT_BG_MAGENTA = Bit.BIT25;
public static final int BIT_BG_CYAN = Bit.BIT26;
public static final int BIT_BG_WHITE = Bit.BIT27;
public static final int BIT_BG_DEFAULT = Bit.BIT28;
public static final int DEFAULT = 0;
public static final int BOLD = 1;
public static final int UNDERLINED = 2;
public static final int BLINK = 3;
public static final int INVERSE = 4;
public static final int INVISIBLE = 5;
public static final int NORMAL = 6;
public static final int NOT_UNDERLINED = 7;
public static final int STEADY = 8;
public static final int POSITIVE = 9;
public static final int VISIBLE = 10;
public static final int FG_BLACK = 11;
public static final int FG_RED = 12;
public static final int FG_GREEN = 13;
public static final int FG_YELLOW = 14;
public static final int FG_BLUE = 15;
public static final int FG_MAGENTA = 16;
public static final int FG_CYAN = 17;
public static final int FG_WHITE = 18;
public static final int FG_DEFAULT = 19;
public static final int BG_BLACK = 20;
public static final int BG_RED = 21;
public static final int BG_GREEN = 22;
public static final int BG_YELLOW = 23;
public static final int BG_BLUE = 24;
public static final int BG_MAGENTA = 25;
public static final int BG_CYAN = 26;
public static final int BG_WHITE = 27;
public static final int BG_DEFAULT = 28;
public static final String vt100[] = {
"0", // 00 normal (default)
"1", // 01 bold
"4", // 02 underlined
"5", // 03 blink (appears as bold)
"7", // 04 inverse
"8", // 05 invisible (hidden)
"22", // 06 normal (neither bold nor faint)
"24", // 07 not underlined
"25", // 08 steady (not blinking)
"27", // 09 positive (not inverse)
"28", // 10 visible (not hidden)
"30", // 11 FG to black
"31", // 12 FG to red
"32", // 13 FG to green
"33", // 14 FG to yellow
"34", // 15 FG to blue
"35", // 16 FG to magenta
"36", // 17 FG to cyan
"37", // 18 FG to white
"39", // 19 FG to default (original)
"40", // 20 BG to black
"41", // 21 BG to red
"42", // 22 BG to green
"43", // 23 BG to yellow
"44", // 24 BG to blue
"45", // 25 BG to magenta
"46", // 26 BG to cyan
"47", // 27 BG to white
"49" // 28 BG to default (original)
};
public static final String WHITE_ON_BLACK = "\033[37;40;0m";
public static final String BLACK_ON_WHITE = "\033[30;47;0m";
public static final String FORCE_NORMAL = WHITE_ON_BLACK;
// XTERM colors
public static final int XT_BLACK = 0;
public static final int XT_RED = 1;
public static final int XT_GREEN = 2;
public static final int XT_YELLOW = 3;
public static final int XT_BLUE = 4;
public static final int XT_MAGENTA = 5;
public static final int XT_CYAN = 6;
public static final int XT_WHITE = 7;
public static final String xterm[] = {
"\033[200m", // 00 FG to black
"\033[201m", // 01 FG to red
"\033[202m", // 02 FG to green
"\033[203m", // 03 FG to yellow
"\033[204m", // 04 FG to blue
"\033[205m", // 05 FG to magenta
"\033[206m", // 06 FG to cyan
"\033[207m", // 07 FG to white
"\033[208m", // 08 FG to ?
"\033[209m", // 09 FG to ?
"\033[210m", // 10 FG to ?
"\033[211m", // 11 FG to ?
"\033[212m", // 12 FG to ?
"\033[213m", // 13 FG to ?
"\033[214m", // 14 FG to ?
"\033[215m" // 15 FG to ?
};
public static String getVT100(int color) {
return "\033[" + vt100[color] + "m";
}
public static String buildVT100(int colorVector) {
String str = "\033[";
if (Bit.isSet(colorVector, 1))
str += vt100[0];
int mask = 2;
for (int i = 1; i < vt100.length; ++i) {
if (Bit.isSet(colorVector, mask))
str += ";" + vt100[i];
mask <<= 1;
}
return str + "m";
}
public static String getXterm(int color) {
return xterm[color];
}
public static String getNormal() {
return FORCE_NORMAL;
}
}