package advancedsystemsmanager.client.gui;
import advancedsystemsmanager.util.ColourUtils;
public enum TextColour
{
BLACK(0x000000),
BLUE(0x0000AA),
GREEN(0x00AA00),
CYAN(0x00AAAA),
DARK_RED(0xAA0000),
PURPLE(0xAA00AA),
ORANGE(0xFFAA00),
LIGHT_GRAY(0xAAAAAA),
GRAY(0x555555),
LIGHT_BLUE(0x5555FF),
LIME(0x55FF55),
TURQUOISE(0x55FFFF),
RED(0xFF5555),
MAGENTA(0xFF55FF),
YELLOW(0xFFFF55),
WHITE(0xFFFFFF);
float[] HSV = new float[3];
TextColour(int hex)
{
ColourUtils.HextoHSV(hex, HSV);
}
public static TextColour getClosestColour(int rgb)
{
double min = 100D;
TextColour matchColour = WHITE;
for (TextColour colour : TextColour.values())
{
if (colour == BLACK) continue;
double distance = colour.getDistanceSq(rgb);
if (distance < min)
{
min = distance;
matchColour = colour;
}
}
return matchColour;
}
public double getDistanceSq(int RGB)
{
float[] colourVals = new float[3];
ColourUtils.HextoHSV(RGB, colourVals);
return (colourVals[2] - HSV[2]) * (colourVals[2] - HSV[2]) + colourVals[1] * colourVals[1] + HSV[1] * HSV[1] - 2 * colourVals[1] * HSV[1] * Math.cos(colourVals[0] - HSV[0]);
}
@Override
public String toString()
{
return "\u00a7" + Integer.toHexString(ordinal());
}
}