Skip to content

Instantly share code, notes, and snippets.

@era5mx
Forked from nightlark/gist:6482130
Last active November 4, 2022 11:09
Show Gist options
  • Save era5mx/271e7cb5157c34974966a4e0b81f8e85 to your computer and use it in GitHub Desktop.
Save era5mx/271e7cb5157c34974966a4e0b81f8e85 to your computer and use it in GitHub Desktop.
Java class to look up a color name from the rgb values.
/*
*
*/
/**
* The Enum Color.
*/
public enum ColorNameEnum {
/** alice blue. */
ALICE_BLUE("AliceBlue"),
/** antique white. */
ANTIQUE_WHITE("AntiqueWhite"),
/** aqua. */
AQUA("Aqua"),
/** aquamarine. */
AQUAMARINE("Aquamarine"),
/** azure. */
AZURE("Azure"),
/** beige. */
BEIGE("Beige"),
/** bisque. */
BISQUE("Bisque"),
/** black. */
BLACK("Black"),
/** blanched almond. */
BLANCHED_ALMOND("BlanchedAlmond"),
/** blue. */
BLUE("Blue"),
/** blue violet. */
BLUE_VIOLET("BlueViolet"),
/** brown. */
BROWN("Brown"),
/** burly wood. */
BURLY_WOOD("BurlyWood"),
/** cadet blue. */
CADET_BLUE("CadetBlue"),
/** chartreuse. */
CHARTREUSE("Chartreuse"),
/** chocolate. */
CHOCOLATE("Chocolate"),
/** coral. */
CORAL("Coral"),
/** cornflower blue. */
CORNFLOWER_BLUE("CornflowerBlue"),
/** cornsilk. */
CORNSILK("Cornsilk"),
/** crimson. */
CRIMSON("Crimson"),
/** cyan. */
CYAN("Cyan"),
/** dark blue. */
DARK_BLUE("DarkBlue"),
/** dark cyan. */
DARK_CYAN("DarkCyan"),
/** dark golden rod. */
DARK_GOLDEN_ROD("DarkGoldenRod"),
/** dark gray. */
DARK_GRAY("DarkGray"),
/** dark green. */
DARK_GREEN("DarkGreen"),
/** dark khaki. */
DARK_KHAKI("DarkKhaki"),
/** dark magenta. */
DARK_MAGENTA("DarkMagenta"),
/** dark olivegreen. */
DARK_OLIVEGREEN("DarkOliveGreen"),
/** dark orange. */
DARK_ORANGE("DarkOrange"),
/** dark orchid. */
DARK_ORCHID("DarkOrchid"),
/** dark red. */
DARK_RED("DarkRed"),
/** dark salmon. */
DARK_SALMON("DarkSalmon"),
/** dark sea green. */
DARK_SEA_GREEN("DarkSeaGreen"),
/** dark slate blue. */
DARK_SLATE_BLUE("DarkSlateBlue"),
/** dark slate gray. */
DARK_SLATE_GRAY("DarkSlateGray"),
/** dark turquoise. */
DARK_TURQUOISE("DarkTurquoise"),
/** dark violet. */
DARK_VIOLET("DarkViolet"),
/** deep pink. */
DEEP_PINK("DeepPink"),
/** deep sky blue. */
DEEP_SKY_BLUE("DeepSkyBlue"),
/** dim gray. */
DIM_GRAY("DimGray"),
/** dodger blue. */
DODGER_BLUE("DodgerBlue"),
/** fire brick. */
FIRE_BRICK("FireBrick"),
/** floral white. */
FLORAL_WHITE("FloralWhite"),
/** forest green. */
FOREST_GREEN("ForestGreen"),
/** fuchsia. */
FUCHSIA("Fuchsia"),
/** gainsboro. */
GAINSBORO("Gainsboro"),
/** ghost white. */
GHOST_WHITE("GhostWhite"),
/** gold. */
GOLD("Gold"),
/** golden rod. */
GOLDEN_ROD("GoldenRod"),
/** gray. */
GRAY("Gray"),
/** green. */
GREEN("Green"),
/** green yellow. */
GREEN_YELLOW("GreenYellow"),
/** honey dew. */
HONEY_DEW("HoneyDew"),
/** hot pink. */
HOT_PINK("HotPink"),
/** indian red. */
INDIAN_RED("IndianRed"),
/** indigo. */
INDIGO("Indigo"),
/** ivory. */
IVORY("Ivory"),
/** khaki. */
KHAKI("Khaki"),
/** lavender. */
LAVENDER("Lavender"),
/** lavender blush. */
LAVENDER_BLUSH("LavenderBlush"),
/** lawn green. */
LAWN_GREEN("LawnGreen"),
/** lemon chiffon. */
LEMON_CHIFFON("LemonChiffon"),
/** light blue. */
LIGHT_BLUE("LightBlue"),
/** light coral. */
LIGHT_CORAL("LightCoral"),
/** light cyan. */
LIGHT_CYAN("LightCyan"),
/** light golden rod yellow. */
LIGHT_GOLDEN_ROD_YELLOW("LightGoldenRodYellow"),
/** light gray. */
LIGHT_GRAY("LightGray"),
/** light green. */
LIGHT_GREEN("LightGreen"),
/** light pink. */
LIGHT_PINK("LightPink"),
/** light salmon. */
LIGHT_SALMON("LightSalmon"),
/** light sea green. */
LIGHT_SEA_GREEN("LightSeaGreen"),
/** light sky blue. */
LIGHT_SKY_BLUE("LightSkyBlue"),
/** light slate gray. */
LIGHT_SLATE_GRAY("LightSlateGray"),
/** light steel blue. */
LIGHT_STEEL_BLUE("LightSteelBlue"),
/** light yellow. */
LIGHT_YELLOW("LightYellow"),
/** lime. */
LIME("Lime"),
/** lime green. */
LIME_GREEN("LimeGreen"),
/** linen. */
LINEN("Linen"),
/** magenta. */
MAGENTA("Magenta"),
/** maroon. */
MAROON("Maroon"),
/** medium aquamarine. */
MEDIUM_AQUAMARINE("MediumAquaMarine"),
/** medium blue. */
MEDIUM_BLUE("MediumBlue"),
/** medium orchid. */
MEDIUM_ORCHID("MediumOrchid"),
/** medium purple. */
MEDIUM_PURPLE("MediumPurple"),
/** medium sea green. */
MEDIUM_SEA_GREEN("MediumSeaGreen"),
/** medium slate blue. */
MEDIUM_SLATE_BLUE("MediumSlateBlue"),
/** medium spring green. */
MEDIUM_SPRING_GREEN("MediumSpringGreen"),
/** medium turquoise. */
MEDIUM_TURQUOISE("MediumTurquoise"),
/** medium violet red. */
MEDIUM_VIOLET_RED("MediumVioletRed"),
/** midnight blue. */
MIDNIGHT_BLUE("MidnightBlue"),
/** mint cream. */
MINT_CREAM("MintCream"),
/** misty rose. */
MISTY_ROSE("MistyRose"),
/** moccasin. */
MOCCASIN("Moccasin"),
/** navajo white. */
NAVAJO_WHITE("NavajoWhite"),
/** navy. */
NAVY("Navy"),
/** old lace. */
OLD_LACE("OldLace"),
/** olive. */
OLIVE("Olive"),
/** olive drab. */
OLIVE_DRAB("OliveDrab"),
/** orange. */
ORANGE("Orange"),
/** orange red. */
ORANGE_RED("OrangeRed"),
/** orchid. */
ORCHID("Orchid"),
/** pale golden rod. */
PALE_GOLDEN_ROD("PaleGoldenRod"),
/** pale green. */
PALE_GREEN("PaleGreen"),
/** pale turquoise. */
PALE_TURQUOISE("PaleTurquoise"),
/** pale violet red. */
PALE_VIOLET_RED("PaleVioletRed"),
/** papaya whip. */
PAPAYA_WHIP("PapayaWhip"),
/** peach puff. */
PEACH_PUFF("PeachPuff"),
/** peru. */
PERU("Peru"),
/** pink. */
PINK("Pink"),
/** plum. */
PLUM("Plum"),
/** powder blue. */
POWDER_BLUE("PowderBlue"),
/** purple. */
PURPLE("Purple"),
/** red. */
RED("Red"),
/** rosy brown. */
ROSY_BROWN("RosyBrown"),
/** royal blue. */
ROYAL_BLUE("RoyalBlue"),
/** saddle brown. */
SADDLE_BROWN("SaddleBrown"),
/** salmon. */
SALMON("Salmon"),
/** sandy brown. */
SANDY_BROWN("SandyBrown"),
/** sea green. */
SEA_GREEN("SeaGreen"),
/** sea shell. */
SEA_SHELL("SeaShell"),
/** sienna. */
SIENNA("Sienna"),
/** silver. */
SILVER("Silver"),
/** sky blue. */
SKY_BLUE("SkyBlue"),
/** slate blue. */
SLATE_BLUE("SlateBlue"),
/** slate gray. */
SLATE_GRAY("SlateGray"),
/** snow. */
SNOW("Snow"),
/** spring green. */
SPRING_GREEN("SpringGreen"),
/** steel blue. */
STEEL_BLUE("SteelBlue"),
/** tan. */
TAN("Tan"),
/** teal. */
TEAL("Teal"),
/** thistle. */
THISTLE("Thistle"),
/** tomato. */
TOMATO("Tomato"),
/** turquoise. */
TURQUOISE("Turquoise"),
/** violet. */
VIOLET("Violet"),
/** wheat. */
WHEAT("Wheat"),
/** white. */
WHITE("White"),
/** white smoke. */
WHITE_SMOKE("WhiteSmoke"),
/** yellow. */
YELLOW("Yellow"),
/** yellow green. */
YELLOW_GREEN("YellowGreen");
/** color name. */
private final String color;
/**
* Instantiates a new color.
*
* @param color the color
*/
private ColorNameEnum(String color) {
this.color = color;
}
/**
* Obtener color.
*
* @return the color
*/
public String getColor() {
return color;
}
/**
* Obtener color name.
*
* @param colorName the color name
* @return color name
*/
public static ColorNameEnum getColorName(final String colorName) {
ColorNameEnum ce = null;
for (ColorNameEnum colorNameValue : ColorNameEnum.values()) {
if (colorName.equals(colorNameValue.getColor())) {
ce = colorNameValue;
}
}
return ce;
}
}
/*
*
*/
import java.awt.Color;
import java.util.ArrayList;
import com.sky.aclaraciones.enums.ColorNameEnum;
/**
* Java Code to get a color name from rgb/hex value/awt color
*
* The part of looking up a color name from the rgb values is edited from
* https://gist.github.com/nightlark/6482130#file-gistfile1-java (that has some
* errors) by Ryan Mast (nightlark)
*/
public class ColorUtils {
/** Constant NO_MATCHED_COLOR_NAME. */
private static final String NO_MATCHED_COLOR_NAME = "No matched color name.";
/**
* Initialize the color list that we have.
*
* @return the array list
*/
private ArrayList<ColorName> initializeColorList() {
ArrayList<ColorName> colorList = new ArrayList<>();
colorList.add(new ColorName(ColorNameEnum.ALICE_BLUE, 0xF0, 0xF8, 0xFF));
colorList.add(new ColorName(ColorNameEnum.ANTIQUE_WHITE, 0xFA, 0xEB, 0xD7));
colorList.add(new ColorName(ColorNameEnum.AQUA, 0x00, 0xFF, 0xFF));
colorList.add(new ColorName(ColorNameEnum.AQUAMARINE, 0x7F, 0xFF, 0xD4));
colorList.add(new ColorName(ColorNameEnum.AZURE, 0xF0, 0xFF, 0xFF));
colorList.add(new ColorName(ColorNameEnum.BEIGE, 0xF5, 0xF5, 0xDC));
colorList.add(new ColorName(ColorNameEnum.BISQUE, 0xFF, 0xE4, 0xC4));
colorList.add(new ColorName(ColorNameEnum.BLACK, 0x00, 0x00, 0x00));
colorList.add(new ColorName(ColorNameEnum.BLANCHED_ALMOND, 0xFF, 0xEB, 0xCD));
colorList.add(new ColorName(ColorNameEnum.BLUE, 0x00, 0x00, 0xFF));
colorList.add(new ColorName(ColorNameEnum.BLUE_VIOLET, 0x8A, 0x2B, 0xE2));
colorList.add(new ColorName(ColorNameEnum.BROWN, 0xA5, 0x2A, 0x2A));
colorList.add(new ColorName(ColorNameEnum.BURLY_WOOD, 0xDE, 0xB8, 0x87));
colorList.add(new ColorName(ColorNameEnum.CADET_BLUE, 0x5F, 0x9E, 0xA0));
colorList.add(new ColorName(ColorNameEnum.CHARTREUSE, 0x7F, 0xFF, 0x00));
colorList.add(new ColorName(ColorNameEnum.CHOCOLATE, 0xD2, 0x69, 0x1E));
colorList.add(new ColorName(ColorNameEnum.CORAL, 0xFF, 0x7F, 0x50));
colorList.add(new ColorName(ColorNameEnum.CORNFLOWER_BLUE, 0x64, 0x95, 0xED));
colorList.add(new ColorName(ColorNameEnum.CORNSILK, 0xFF, 0xF8, 0xDC));
colorList.add(new ColorName(ColorNameEnum.CRIMSON, 0xDC, 0x14, 0x3C));
colorList.add(new ColorName(ColorNameEnum.CYAN, 0x00, 0xFF, 0xFF));
colorList.add(new ColorName(ColorNameEnum.DARK_BLUE, 0x00, 0x00, 0x8B));
colorList.add(new ColorName(ColorNameEnum.DARK_CYAN, 0x00, 0x8B, 0x8B));
colorList.add(new ColorName(ColorNameEnum.DARK_GOLDEN_ROD, 0xB8, 0x86, 0x0B));
colorList.add(new ColorName(ColorNameEnum.DARK_GRAY, 0xA9, 0xA9, 0xA9));
colorList.add(new ColorName(ColorNameEnum.DARK_GREEN, 0x00, 0x64, 0x00));
colorList.add(new ColorName(ColorNameEnum.DARK_KHAKI, 0xBD, 0xB7, 0x6B));
colorList.add(new ColorName(ColorNameEnum.DARK_MAGENTA, 0x8B, 0x00, 0x8B));
colorList.add(new ColorName(ColorNameEnum.DARK_OLIVEGREEN, 0x55, 0x6B, 0x2F));
colorList.add(new ColorName(ColorNameEnum.DARK_ORANGE, 0xFF, 0x8C, 0x00));
colorList.add(new ColorName(ColorNameEnum.DARK_ORCHID, 0x99, 0x32, 0xCC));
colorList.add(new ColorName(ColorNameEnum.DARK_RED, 0x8B, 0x00, 0x00));
colorList.add(new ColorName(ColorNameEnum.DARK_SALMON, 0xE9, 0x96, 0x7A));
colorList.add(new ColorName(ColorNameEnum.DARK_SEA_GREEN, 0x8F, 0xBC, 0x8F));
colorList.add(new ColorName(ColorNameEnum.DARK_SLATE_BLUE, 0x48, 0x3D, 0x8B));
colorList.add(new ColorName(ColorNameEnum.DARK_SLATE_GRAY, 0x2F, 0x4F, 0x4F));
colorList.add(new ColorName(ColorNameEnum.DARK_TURQUOISE, 0x00, 0xCE, 0xD1));
colorList.add(new ColorName(ColorNameEnum.DARK_VIOLET, 0x94, 0x00, 0xD3));
colorList.add(new ColorName(ColorNameEnum.DEEP_PINK, 0xFF, 0x14, 0x93));
colorList.add(new ColorName(ColorNameEnum.DEEP_SKY_BLUE, 0x00, 0xBF, 0xFF));
colorList.add(new ColorName(ColorNameEnum.DIM_GRAY, 0x69, 0x69, 0x69));
colorList.add(new ColorName(ColorNameEnum.DODGER_BLUE, 0x1E, 0x90, 0xFF));
colorList.add(new ColorName(ColorNameEnum.FIRE_BRICK, 0xB2, 0x22, 0x22));
colorList.add(new ColorName(ColorNameEnum.FLORAL_WHITE, 0xFF, 0xFA, 0xF0));
colorList.add(new ColorName(ColorNameEnum.FOREST_GREEN, 0x22, 0x8B, 0x22));
colorList.add(new ColorName(ColorNameEnum.FUCHSIA, 0xFF, 0x00, 0xFF));
colorList.add(new ColorName(ColorNameEnum.GAINSBORO, 0xDC, 0xDC, 0xDC));
colorList.add(new ColorName(ColorNameEnum.GHOST_WHITE, 0xF8, 0xF8, 0xFF));
colorList.add(new ColorName(ColorNameEnum.GOLD, 0xFF, 0xD7, 0x00));
colorList.add(new ColorName(ColorNameEnum.GOLDEN_ROD, 0xDA, 0xA5, 0x20));
colorList.add(new ColorName(ColorNameEnum.GRAY, 0x80, 0x80, 0x80));
colorList.add(new ColorName(ColorNameEnum.GREEN, 0x00, 0x80, 0x00));
colorList.add(new ColorName(ColorNameEnum.GREEN_YELLOW, 0xAD, 0xFF, 0x2F));
colorList.add(new ColorName(ColorNameEnum.HONEY_DEW, 0xF0, 0xFF, 0xF0));
colorList.add(new ColorName(ColorNameEnum.HOT_PINK, 0xFF, 0x69, 0xB4));
colorList.add(new ColorName(ColorNameEnum.INDIAN_RED, 0xCD, 0x5C, 0x5C));
colorList.add(new ColorName(ColorNameEnum.INDIGO, 0x4B, 0x00, 0x82));
colorList.add(new ColorName(ColorNameEnum.IVORY, 0xFF, 0xFF, 0xF0));
colorList.add(new ColorName(ColorNameEnum.KHAKI, 0xF0, 0xE6, 0x8C));
colorList.add(new ColorName(ColorNameEnum.LAVENDER, 0xE6, 0xE6, 0xFA));
colorList.add(new ColorName(ColorNameEnum.LAVENDER_BLUSH, 0xFF, 0xF0, 0xF5));
colorList.add(new ColorName(ColorNameEnum.LAWN_GREEN, 0x7C, 0xFC, 0x00));
colorList.add(new ColorName(ColorNameEnum.LEMON_CHIFFON, 0xFF, 0xFA, 0xCD));
colorList.add(new ColorName(ColorNameEnum.LIGHT_BLUE, 0xAD, 0xD8, 0xE6));
colorList.add(new ColorName(ColorNameEnum.LIGHT_CORAL, 0xF0, 0x80, 0x80));
colorList.add(new ColorName(ColorNameEnum.LIGHT_CYAN, 0xE0, 0xFF, 0xFF));
colorList.add(new ColorName(ColorNameEnum.LIGHT_GOLDEN_ROD_YELLOW, 0xFA, 0xFA, 0xD2));
colorList.add(new ColorName(ColorNameEnum.LIGHT_GRAY, 0xD3, 0xD3, 0xD3));
colorList.add(new ColorName(ColorNameEnum.LIGHT_GREEN, 0x90, 0xEE, 0x90));
colorList.add(new ColorName(ColorNameEnum.LIGHT_PINK, 0xFF, 0xB6, 0xC1));
colorList.add(new ColorName(ColorNameEnum.LIGHT_SALMON, 0xFF, 0xA0, 0x7A));
colorList.add(new ColorName(ColorNameEnum.LIGHT_SEA_GREEN, 0x20, 0xB2, 0xAA));
colorList.add(new ColorName(ColorNameEnum.LIGHT_SKY_BLUE, 0x87, 0xCE, 0xFA));
colorList.add(new ColorName(ColorNameEnum.LIGHT_SLATE_GRAY, 0x77, 0x88, 0x99));
colorList.add(new ColorName(ColorNameEnum.LIGHT_STEEL_BLUE, 0xB0, 0xC4, 0xDE));
colorList.add(new ColorName(ColorNameEnum.LIGHT_YELLOW, 0xFF, 0xFF, 0xE0));
colorList.add(new ColorName(ColorNameEnum.LIME, 0x00, 0xFF, 0x00));
colorList.add(new ColorName(ColorNameEnum.LIME_GREEN, 0x32, 0xCD, 0x32));
colorList.add(new ColorName(ColorNameEnum.LINEN, 0xFA, 0xF0, 0xE6));
colorList.add(new ColorName(ColorNameEnum.MAGENTA, 0xFF, 0x00, 0xFF));
colorList.add(new ColorName(ColorNameEnum.MAROON, 0x80, 0x00, 0x00));
colorList.add(new ColorName(ColorNameEnum.MEDIUM_AQUAMARINE, 0x66, 0xCD, 0xAA));
colorList.add(new ColorName(ColorNameEnum.MEDIUM_BLUE, 0x00, 0x00, 0xCD));
colorList.add(new ColorName(ColorNameEnum.MEDIUM_ORCHID, 0xBA, 0x55, 0xD3));
colorList.add(new ColorName(ColorNameEnum.MEDIUM_PURPLE, 0x93, 0x70, 0xDB));
colorList.add(new ColorName(ColorNameEnum.MEDIUM_SEA_GREEN, 0x3C, 0xB3, 0x71));
colorList.add(new ColorName(ColorNameEnum.MEDIUM_SLATE_BLUE, 0x7B, 0x68, 0xEE));
colorList.add(new ColorName(ColorNameEnum.MEDIUM_SPRING_GREEN, 0x00, 0xFA, 0x9A));
colorList.add(new ColorName(ColorNameEnum.MEDIUM_TURQUOISE, 0x48, 0xD1, 0xCC));
colorList.add(new ColorName(ColorNameEnum.MEDIUM_VIOLET_RED, 0xC7, 0x15, 0x85));
colorList.add(new ColorName(ColorNameEnum.MIDNIGHT_BLUE, 0x19, 0x19, 0x70));
colorList.add(new ColorName(ColorNameEnum.MINT_CREAM, 0xF5, 0xFF, 0xFA));
colorList.add(new ColorName(ColorNameEnum.MISTY_ROSE, 0xFF, 0xE4, 0xE1));
colorList.add(new ColorName(ColorNameEnum.MOCCASIN, 0xFF, 0xE4, 0xB5));
colorList.add(new ColorName(ColorNameEnum.NAVAJO_WHITE, 0xFF, 0xDE, 0xAD));
colorList.add(new ColorName(ColorNameEnum.NAVY, 0x00, 0x00, 0x80));
colorList.add(new ColorName(ColorNameEnum.OLD_LACE, 0xFD, 0xF5, 0xE6));
colorList.add(new ColorName(ColorNameEnum.OLIVE, 0x80, 0x80, 0x00));
colorList.add(new ColorName(ColorNameEnum.OLIVE_DRAB, 0x6B, 0x8E, 0x23));
colorList.add(new ColorName(ColorNameEnum.ORANGE, 0xFF, 0xA5, 0x00));
colorList.add(new ColorName(ColorNameEnum.ORANGE_RED, 0xFF, 0x45, 0x00));
colorList.add(new ColorName(ColorNameEnum.ORCHID, 0xDA, 0x70, 0xD6));
colorList.add(new ColorName(ColorNameEnum.PALE_GOLDEN_ROD, 0xEE, 0xE8, 0xAA));
colorList.add(new ColorName(ColorNameEnum.PALE_GREEN, 0x98, 0xFB, 0x98));
colorList.add(new ColorName(ColorNameEnum.PALE_TURQUOISE, 0xAF, 0xEE, 0xEE));
colorList.add(new ColorName(ColorNameEnum.PALE_VIOLET_RED, 0xDB, 0x70, 0x93));
colorList.add(new ColorName(ColorNameEnum.PAPAYA_WHIP, 0xFF, 0xEF, 0xD5));
colorList.add(new ColorName(ColorNameEnum.PEACH_PUFF, 0xFF, 0xDA, 0xB9));
colorList.add(new ColorName(ColorNameEnum.PERU, 0xCD, 0x85, 0x3F));
colorList.add(new ColorName(ColorNameEnum.PINK, 0xFF, 0xC0, 0xCB));
colorList.add(new ColorName(ColorNameEnum.PLUM, 0xDD, 0xA0, 0xDD));
colorList.add(new ColorName(ColorNameEnum.POWDER_BLUE, 0xB0, 0xE0, 0xE6));
colorList.add(new ColorName(ColorNameEnum.PURPLE, 0x80, 0x00, 0x80));
colorList.add(new ColorName(ColorNameEnum.RED, 0xFF, 0x00, 0x00));
colorList.add(new ColorName(ColorNameEnum.ROSY_BROWN, 0xBC, 0x8F, 0x8F));
colorList.add(new ColorName(ColorNameEnum.ROYAL_BLUE, 0x41, 0x69, 0xE1));
colorList.add(new ColorName(ColorNameEnum.SADDLE_BROWN, 0x8B, 0x45, 0x13));
colorList.add(new ColorName(ColorNameEnum.SALMON, 0xFA, 0x80, 0x72));
colorList.add(new ColorName(ColorNameEnum.SANDY_BROWN, 0xF4, 0xA4, 0x60));
colorList.add(new ColorName(ColorNameEnum.SEA_GREEN, 0x2E, 0x8B, 0x57));
colorList.add(new ColorName(ColorNameEnum.SEA_SHELL, 0xFF, 0xF5, 0xEE));
colorList.add(new ColorName(ColorNameEnum.SIENNA, 0xA0, 0x52, 0x2D));
colorList.add(new ColorName(ColorNameEnum.SILVER, 0xC0, 0xC0, 0xC0));
colorList.add(new ColorName(ColorNameEnum.SKY_BLUE, 0x87, 0xCE, 0xEB));
colorList.add(new ColorName(ColorNameEnum.SLATE_BLUE, 0x6A, 0x5A, 0xCD));
colorList.add(new ColorName(ColorNameEnum.SLATE_GRAY, 0x70, 0x80, 0x90));
colorList.add(new ColorName(ColorNameEnum.SNOW, 0xFF, 0xFA, 0xFA));
colorList.add(new ColorName(ColorNameEnum.SPRING_GREEN, 0x00, 0xFF, 0x7F));
colorList.add(new ColorName(ColorNameEnum.STEEL_BLUE, 0x46, 0x82, 0xB4));
colorList.add(new ColorName(ColorNameEnum.TAN, 0xD2, 0xB4, 0x8C));
colorList.add(new ColorName(ColorNameEnum.TEAL, 0x00, 0x80, 0x80));
colorList.add(new ColorName(ColorNameEnum.THISTLE, 0xD8, 0xBF, 0xD8));
colorList.add(new ColorName(ColorNameEnum.TOMATO, 0xFF, 0x63, 0x47));
colorList.add(new ColorName(ColorNameEnum.TURQUOISE, 0x40, 0xE0, 0xD0));
colorList.add(new ColorName(ColorNameEnum.VIOLET, 0xEE, 0x82, 0xEE));
colorList.add(new ColorName(ColorNameEnum.WHEAT, 0xF5, 0xDE, 0xB3));
colorList.add(new ColorName(ColorNameEnum.WHITE, 0xFF, 0xFF, 0xFF));
colorList.add(new ColorName(ColorNameEnum.WHITE_SMOKE, 0xF5, 0xF5, 0xF5));
colorList.add(new ColorName(ColorNameEnum.YELLOW, 0xFF, 0xFF, 0x00));
colorList.add(new ColorName(ColorNameEnum.YELLOW_GREEN, 0x9A, 0xCD, 0x32));
return colorList;
}
/**
* Get the closest color name from our list.
*
* @param r the r
* @param g the g
* @param b the b
* @return the color name from rgb
*/
public String getColorNameFromRgb(int r, int g, int b) {
ArrayList<ColorName> colorList = initializeColorList();
ColorName closestMatch = null;
int minMSE = Integer.MAX_VALUE;
int mse;
for (ColorName c : colorList) {
mse = c.computeMSE(r, g, b);
if (mse < minMSE) {
minMSE = mse;
closestMatch = c;
}
}
return closestMatch != null ? closestMatch.getName() : NO_MATCHED_COLOR_NAME;
}
/**
* Convert hexColor to rgb, then call getColorNameFromRgb(r, g, b).
*
* @param hexColor the hex color
* @return the color name from hex
*/
public String getColorNameFromHex(int hexColor) {
int r = (hexColor & 0xFF0000) >> 16;
int g = (hexColor & 0xFF00) >> 8;
int b = (hexColor & 0xFF);
return getColorNameFromRgb(r, g, b);
}
/**
* Color to hex.
*
* @param c the c
* @return the int
*/
public int colorToHex(Color c) {
return Integer.decode("0x" + Integer.toHexString(c.getRGB()).substring(2));
}
/**
* Gets the color name from color.
*
* @param color the color
* @return the color name from color
*/
public String getColorNameFromColor(Color color) {
return getColorNameFromRgb(color.getRed(), color.getGreen(), color.getBlue());
}
/**
* Gets the color from name.
*
* @param name the name
* @return the color from name
*/
public Color getColorFromName(ColorNameEnum name) {
Color color = null;
ArrayList<ColorName> colorList = initializeColorList();
for (ColorName colorName : colorList) {
if (colorName.getName().equals(name.getColor())) {
color = new Color(colorName.getR(), colorName.getG(), colorName.getB());
}
}
return color;
}
/**
* SubClass of ColorUtils. In order to lookup color name
*
* @author Xiaoxiao Li
*
*/
public class ColorName {
/** The r. */
private int r;
/** The g. */
private int g;
/** The b. */
private int b;
/** The name. */
private String name;
/**
* Instantiates a new color name.
*
* @param name the name
* @param r the r
* @param g the g
* @param b the b
*/
public ColorName(ColorNameEnum name, int r, int g, int b) {
this.r = r;
this.g = g;
this.b = b;
this.name = name.getColor();
}
/**
* Compute MSE.
*
* @param pixR the pix R
* @param pixG the pix G
* @param pixB the pix B
* @return the int
*/
public int computeMSE(int pixR, int pixG, int pixB) {
return (((pixR - r) * (pixR - r) + (pixG - g) * (pixG - g) + (pixB - b) * (pixB - b)) / 3);
}
/**
* Gets the r.
*
* @return the r
*/
public int getR() {
return r;
}
/**
* Gets the g.
*
* @return the g
*/
public int getG() {
return g;
}
/**
* Gets the b.
*
* @return the b
*/
public int getB() {
return b;
}
/**
* Gets the name.
*
* @return the name
*/
public String getName() {
return name;
}
}
}
/*
*
*/
import java.awt.Color;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.junit.Assert;
import org.junit.Test;
import com.sky.aclaraciones.enums.ColorNameEnum;
/**
* The Class ColorUtilsTest.
*/
public class ColorUtilsTest {
/** Constant LOGGER. */
private static final Logger LOGGER = Logger.getLogger(ColorUtilsTest.class);
/** ColorUtils. */
private ColorUtils colorUtils;
/**
* Constructor
* @param colorUtils
*/
public ColorUtilsTest() {
super();
this.colorUtils = new ColorUtils();
}
/**
* Test method for
* {@link com.sky.aclaraciones.utils.ColorUtils#getColorNameFromRgb(int, int, int)}.
*
* @throws Exception the exception
*/
@Test
public void testGetColorNameFromRgb() throws Exception {
LOGGER.info("Ejecutando testGetColorNameFromRgb()");
String nameColor = colorUtils.getColorNameFromRgb(0, 0, 0);
LOGGER.debug("nameColor: [" + nameColor + "]");
Assert.assertTrue(StringUtils.isNotBlank(nameColor));
ColorNameEnum colorName = ColorNameEnum.getColorName(nameColor);
Assert.assertNotNull(colorName);
}
/**
* Test method for
* {@link com.sky.aclaraciones.utils.ColorUtils#getColorNameFromHex(int)}.
*
* @throws Exception the exception
*/
@Test
public void testGetColorNameFromHex() throws Exception {
LOGGER.info("Ejecutando testGetColorNameFromHex()");
String nameColor = colorUtils.getColorNameFromHex(256);
LOGGER.debug("nameColor: [" + nameColor + "]");
Assert.assertTrue(StringUtils.isNotBlank(nameColor));
ColorNameEnum colorName = ColorNameEnum.getColorName(nameColor);
Assert.assertNotNull(colorName);
}
/**
* Test method for
* {@link com.sky.aclaraciones.utils.ColorUtils#colorToHex(java.awt.Color)}.
*
* @throws Exception the exception
*/
@Test
public void testColorToHex() throws Exception {
LOGGER.info("Ejecutando testColorToHex()");
Color color = new Color(256);
int hexColor = colorUtils.colorToHex(color);
Assert.assertTrue(hexColor > 0);
}
/**
* Test method for
* {@link com.sky.aclaraciones.utils.ColorUtils#getColorNameFromColor(java.awt.Color)}.
*
* @throws Exception the exception
*/
@Test
public void testGetColorNameFromColor() throws Exception {
LOGGER.info("Ejecutando testGetColorNameFromColor()");
Color color = new Color(256);
String nameColor = colorUtils.getColorNameFromColor(color);
LOGGER.debug("nameColor: [" + nameColor + "]");
Assert.assertTrue(StringUtils.isNotBlank(nameColor));
ColorNameEnum colorName = ColorNameEnum.getColorName(nameColor);
Assert.assertNotNull(colorName);
}
/**
* Test method for
* {@link com.sky.aclaraciones.utils.ColorUtils#getColorFromName(java.lang.String)}.
*
* @throws Exception the exception
*/
@Test
public void testGetColorFromName() throws Exception {
LOGGER.info("Ejecutando testGetColorFromName()");
Color color = colorUtils.getColorFromName(ColorNameEnum.CORNSILK);
Assert.assertNotNull(color);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment