package tim.prune.config; import java.awt.Color; /** * Class to hold static methods for handling colours * including converting to and from hex code Strings */ public abstract class ColourUtils { /** * Convert a string into a Color object * @param inValue 6-character hex code * @return corresponding colour */ public static Color colourFromHex(String inValue) { Color retVal = null; if (inValue != null && inValue.length() == 6) { try { final int redness = convertToInt(inValue.substring(0, 2)); final int greenness = convertToInt(inValue.substring(2, 4)); final int blueness = convertToInt(inValue.substring(4, 6)); retVal = new Color(redness, greenness, blueness); } catch (NumberFormatException nfe) {} // colour stays null } return retVal; } /** * @param inPair two-digit String representing hex code * @return corresponding integer (0 to 255) */ private static int convertToInt(String inPair) { int val = Integer.parseInt(inPair, 16); if (val < 0) val = 0; return val; } /** * Make a hex code string for the given colour * @param inColour colour * @return 6-character hex code */ public static String makeHexCode(Color inColour) { return convertToHex(inColour.getRed()) + convertToHex(inColour.getGreen()) + convertToHex(inColour.getBlue()); } /** * @param inValue integer value from 0 to 255 * @return two-character hex code */ private static String convertToHex(int inValue) { // Uses lower case a-f String code = Integer.toHexString(inValue); // Pad with leading 0 if necessary return (inValue < 16 ? "0" + code : code); } }