Map colors into names and vice versa.
/**
*
* LibSparkline : a free Java sparkline chart library
*
*
* Project Info: http://reporting.pentaho.org/libsparkline/
*
* (C) Copyright 2008, by Larry Ogrodnek, Pentaho Corporation and Contributors.
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the Apache License 2.0.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the Apache License 2.0 along with this library;
* if not, a online version is available at http://www.apache.org/licenses/
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc.
* in the United States and other countries.]
*
* ------------
* ColorUtilitiy.java
* ------------
*/
import java.awt.Color;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.HashMap;
/**
* A helper class to map colors into names and vice versa.
*
* @author Thomas Morgner
*/
public final class ColorUtilitiy {
private static final HashMap knownColorNamesByColor;
private static final HashMap knownColorsByName;
static {
knownColorNamesByColor = new HashMap();
knownColorsByName = new HashMap();
try {
final Field[] fields = Color.class.getFields();
for (int i = 0; i < fields.length; i++) {
final Field f = fields[i];
if (Modifier.isPublic(f.getModifiers()) && Modifier.isFinal(f.getModifiers())
&& Modifier.isStatic(f.getModifiers())) {
final String name = f.getName();
final Object oColor = f.get(null);
if (oColor instanceof Color) {
knownColorNamesByColor.put(oColor, name.toLowerCase());
knownColorsByName.put(name.toLowerCase(), oColor);
}
}
}
} catch (Exception e) {
// ignore ..
}
}
/**
* Utility class constructor prevents object creation.
*/
private ColorUtilitiy() {
}
/**
* Parse a String into a Color. <p/> This method will accept either a color
* name (a field name from {@link Color}, case insensitive e.g. "red"), or a
* HTML hex color string (e.g. "#ff0000" for Color.RED).
*
* @param value
* String to parse for color name or color number.
* @return Color for s.
*/
private static Color parseColor(final String value) {
if (value == null) {
return null;
}
final Object o = knownColorsByName.get(value.toLowerCase());
if (o != null) {
return (Color) o;
}
try {
// get color by hex or octal value
return Color.decode(value.trim());
} catch (NumberFormatException nfe) {
return null;
}
}
/**
* Parse a String into a Color, and returns the given default value if the
* color is not parsable. <p/> This method will accept either a color name (a
* field name from {@link Color}, case insensitive e.g. "red"), or a HTML hex
* color string (e.g. "#ff0000" for Color.RED).
*
* @param colorText
* String to parse for color name or color number.
* @param defValue
* the default value that should be returned if the string is not
* parseable or null.
* @return Color for the text.
*/
public static Color convertColor(final String colorText, final Color defValue) {
if (colorText == null || colorText.isEmpty()) {
return defValue;
}
final Color retval = parseColor(colorText);
if (retval == null) {
return defValue;
}
return retval;
}
}
Related examples in the same category
1. | Color class is used to work with colors in Java 2D | | |
2. | Color Utilities: common color operations | | |
3. | Color Difference | | |
4. | Rainbow Color | | |
5. | XOR color | | |
6. | Color Gradient | | |
7. | Common color utilities | | |
8. | Drawing with Color | | |
9. | Color fading animation | | |
10. | 140 colors - defined for X Window System listed in O'Reilly html pocket reference 87pp | | |
11. | Color Util | | |
12. | Color Factory | | |
13. | An efficient color quantization algorithm | | |
14. | Utility for checking colors given either hexa or natural language string descriptions. | | |
15. | Derives a color by adding the specified offsets to the base color's hue, saturation, and brightness values | | |
16. | Converts a given string into a color. | | |
17. | If the color is equal to one of the defined constant colors, that name is returned instead. | | |
18. | Converts the String representation of a color to an actual Color object. | | |
19. | Returns blue-yellow-red color scale | | |
20. | Returns green-yellow-red-black color scale | | |
21. | Returns black-red-yellow-green color scale | | |
22. | Returns color based on 0-9 scale ranging from green to yellow | | |
23. | Returns color based on 0-9 scale ranging from yellow to red | | |
24. | Returns color based on 0-9 scale ranging from black to green | | |
25. | Returns n-dimensional array of colors for given nx3 integer array of RGB values | | |
26. | Web color enum | | |
27. | Utility class for managing resources such as colors, fonts, images, etc. | | |
28. | Make a color transparent | | |
29. | Return a Color object given a string representation of it | | |
30. | Return a string representation of a color | | |
31. | Serializes a color to its HTML markup (e.g. "#ff0000" for red) | | |
32. | Parses a java.awt.Color from an HTML color string in the form '#RRGGBB' where RR, GG, and BB are the red, green, and blue bytes in hexadecimal form | | |
33. | Performs a somewhat subjective analysis of a color to determine how dark it looks to a user | | |
34. | Lightens a color by a given amount | | |
35. | Darkens a color by a given amount | | |
36. | Blend two colors | | |
37. | Utility for working with natively-ordered integer-packed RGBA-format colours. | | |
38. | HSV to RGB | | |
39. | A widget to manipulate an RGBA colour. | | |