package org.csstudio.sds.util; import java.util.regex.Pattern; /** * Utility for color and font conversions. * * @author Sven Wende * */ public class ColorAndFontUtil { private static final Pattern COLOR_SYNTAX_PATTERN = Pattern.compile("#[0123456789abcdefABCDEF]{6}"); private static final Pattern VARIABLE_SYNTAX_PATTERN = Pattern.compile("\\$\\{[a-zA-Z0-9.-]+\\}"); public static String toFontString(String font, int size) { return toFontString(font, size, false, false); } public static String toFontString(String font, boolean bold, boolean italic) { return toFontString(font, -1, bold, italic); } public static String toFontString(String font, int size, boolean bold, boolean italic) { StringBuffer sb = new StringBuffer(); sb.append(font); if (size > 0) { sb.append(", "); sb.append(size); } if (bold) { sb.append(", bold"); } if (italic) { sb.append(", italic"); } return sb.toString(); } /** * Converts the specified rgb values to a hexadecimal representation. * * @param r * red * @param g * green * @param b * blue * @return hexadecimal representation of the color */ public static String toHex(int r, int g, int b) { return "#" + number2hex(r) + number2hex(g) + number2hex(b); } /** * Returns true, if the specified String is a hexadecimal color * representation, like #FF0000. * * @param hex * the raw String * * @return true if the specified raw String is a hexadecimal color * representation */ public static boolean isHex(String hex) { if (hex != null) { return COLOR_SYNTAX_PATTERN.matcher(hex).matches(); } else { return false; } } /** * Returns true if the specified String is a variable that can be used for * colors or fonts, like ${colorId}. * * @param s * the raw String * * @return true if the specified String is a variable that can be used for * colors or fonts */ public static boolean isVariable(String s) { return VARIABLE_SYNTAX_PATTERN.matcher(s).matches(); } private static String number2hex(int nr) { String hex = Integer.toHexString(nr); String result = hex; while (result.length() < 2) { result = '0' + result; } return result; } }