1919import org .w3c .css .values .CssCheckableValue ;
2020import org .w3c .css .values .CssColor ;
2121import org .w3c .css .values .CssExpression ;
22+ import org .w3c .css .values .CssIdent ;
2223import org .w3c .css .values .CssPercentage ;
2324import org .w3c .css .values .CssTypes ;
2425import org .w3c .css .values .CssValue ;
3031import static org .w3c .css .values .CssOperator .SPACE ;
3132
3233public class HWB {
34+ public static final CssIdent h , w , b , a ;
35+
36+ static {
37+ h = CssIdent .getIdent ("h" );
38+ w = CssIdent .getIdent ("w" );
39+ b = CssIdent .getIdent ("b" );
40+ a = CssIdent .getIdent ("alpha" );
41+ }
42+
3343 String output = null ;
3444 boolean faSet = false ;
3545
@@ -103,7 +113,8 @@ public static final HWB parseHWBColor(ApplContext ac, CssExpression exp, CssColo
103113 hwb .setHue (ac , val );
104114 break ;
105115 case CssTypes .CSS_IDENT :
106- if (CssColor .none .equals (val .getIdent ())) {
116+ if (CssColor .none .equals (val .getIdent ()) ||
117+ (hwb .isRelative && h .equals (val .getIdent ()))) {
107118 hwb .setHue (ac , val );
108119 break ;
109120 }
@@ -127,7 +138,8 @@ public static final HWB parseHWBColor(ApplContext ac, CssExpression exp, CssColo
127138 hwb .setWhiteness (ac , val );
128139 break ;
129140 case CssTypes .CSS_IDENT :
130- if (CssColor .none .equals (val .getIdent ())) {
141+ if (CssColor .none .equals (val .getIdent ()) ||
142+ (hwb .isRelative && w .equals (val .getIdent ()))) {
131143 hwb .setWhiteness (ac , val );
132144 break ;
133145 }
@@ -154,7 +166,8 @@ public static final HWB parseHWBColor(ApplContext ac, CssExpression exp, CssColo
154166 hwb .setBlackness (ac , val );
155167 break ;
156168 case CssTypes .CSS_IDENT :
157- if (CssColor .none .equals (val .getIdent ())) {
169+ if (CssColor .none .equals (val .getIdent ()) ||
170+ (hwb .isRelative && b .equals (val .getIdent ()))) {
158171 hwb .setBlackness (ac , val );
159172 break ;
160173 }
@@ -196,7 +209,8 @@ public static final HWB parseHWBColor(ApplContext ac, CssExpression exp, CssColo
196209 hwb .setAlpha (ac , val );
197210 break ;
198211 case CssTypes .CSS_IDENT :
199- if (CssColor .none .equals (val .getIdent ())) {
212+ if (CssColor .none .equals (val .getIdent ()) ||
213+ (hwb .isRelative && a .equals (val .getIdent ()))) {
200214 hwb .setAlpha (ac , val );
201215 break ;
202216 }
0 commit comments