CSR :
|
Summary ------- The Swing HTML StyleSheet.stringToColor() method is updated to support CSS 4 color names and hexadecimal strings supporting alpha. Problem ------- The Swing HTML StyleSheet.stringToColor() method is specified as supporting only HTML 3.2 color strings, and hex strings without alpha support. CSS 4 has many additional color strings that can't be used. Solution -------- Update the implementation and specification to support CSS4 color names and hex strings. This does not advance anything else in the Swing HTML support beyond HTML 3.2 Specification ------------- Update the method java.awt.Color javax.swing.html.StyleSheet.stringToColor(String string) <pre> /** - * Converts a color string such as "RED" or "#NNNNNN" to a Color. - * Note: This will only convert the HTML3.2 color strings - * or a string of length 7; - * otherwise, it will return null. + * Converts a color string such as "RED", "rgb(r g b)", "rgb(r g b a)", + * "rgba(r g b a)" or "#NNN", "#NNNN", "#NNNNNN", + * "#NNNNNNNN" to a Color. + * + * Note: This will only convert strings which use any of the following: + * + * https://www.w3.org/TR/css-color-4/#named-colors + * https://www.w3.org/TR/css-color-4/#hex-notation" + * starting with {@code #} followed by 3, 4, 6, or 8 hexadecimal digits, + * https://www.w3.org/TR/css-color-4/#rgb-functions" `rgb()` and `rgba()` + * functions + * + * as specified by the CSS Color Module Level 4 https://www.w3.org/TR/css-color-4 + * Otherwise, it will return null. + * + * This method is case-insensitive. + * + * The following code defines instances of the same color : + * {@snippet lang="java" : + * import java.awt.Color; + * import javax.swing.text.html.StyleSheet; + * StyleSheet styleSheet = new StyleSheet(); + * // An opaque lightseagreen + * Color color0 = styleSheet.stringToColor("Lightseagreen"); + * Color color1 = styleSheet.stringToColor("#20b2aa"); + * } * - * @param string color string such as "RED" or "#NNNNNN" + * @param string color, string such as "RED" or "rgb(r g b)", "rgba(r g b a)" + * or "#NNN", "#NNNN", "#NNNNNN", "#NNNNNNNN". * @return the color */ public Color stringToColor(String string) </pre>