|
14 | 14 | import org.w3c.css.values.CssCheckableValue; |
15 | 15 | import org.w3c.css.values.CssColor; |
16 | 16 | import org.w3c.css.values.CssExpression; |
| 17 | +import org.w3c.css.values.CssIdent; |
17 | 18 | import org.w3c.css.values.CssNumber; |
18 | 19 | import org.w3c.css.values.CssPercentage; |
19 | 20 | import org.w3c.css.values.CssTypes; |
|
27 | 28 | import static org.w3c.css.values.CssOperator.SPACE; |
28 | 29 |
|
29 | 30 | public class HSL { |
| 31 | + public static final CssIdent h, s, l, a; |
| 32 | + |
| 33 | + static { |
| 34 | + h = CssIdent.getIdent("h"); |
| 35 | + s = CssIdent.getIdent("s"); |
| 36 | + l = CssIdent.getIdent("l"); |
| 37 | + a = CssIdent.getIdent("alpha"); |
| 38 | + } |
| 39 | + |
30 | 40 | String output = null; |
31 | 41 | CssValue vh, vs, vl, va; |
32 | 42 | boolean isRelative = false; |
@@ -130,7 +140,8 @@ public static final HSL parseHSL(ApplContext ac, CssExpression exp, CssColor cal |
130 | 140 | hsl.setHue(ac, val); |
131 | 141 | break; |
132 | 142 | case CssTypes.CSS_IDENT: |
133 | | - if (separator_space && CssColor.none.equals(val.getIdent())) { |
| 143 | + if (separator_space && CssColor.none.equals(val.getIdent()) || |
| 144 | + (hsl.isRelative && h.equals(val.getIdent()))) { |
134 | 145 | hsl.setHue(ac, val); |
135 | 146 | break; |
136 | 147 | } |
@@ -162,7 +173,8 @@ public static final HSL parseHSL(ApplContext ac, CssExpression exp, CssColor cal |
162 | 173 | hsl.setSaturation(ac, val); |
163 | 174 | break; |
164 | 175 | case CssTypes.CSS_IDENT: |
165 | | - if (separator_space && CssColor.none.equals(val.getIdent())) { |
| 176 | + if (separator_space && CssColor.none.equals(val.getIdent()) || |
| 177 | + (hsl.isRelative && s.equals(val.getIdent()))) { |
166 | 178 | hsl.setSaturation(ac, val); |
167 | 179 | break; |
168 | 180 | } |
@@ -192,7 +204,8 @@ public static final HSL parseHSL(ApplContext ac, CssExpression exp, CssColor cal |
192 | 204 | hsl.setLightness(ac, val); |
193 | 205 | break; |
194 | 206 | case CssTypes.CSS_IDENT: |
195 | | - if (separator_space && CssColor.none.equals(val.getIdent())) { |
| 207 | + if (separator_space && CssColor.none.equals(val.getIdent()) || |
| 208 | + (hsl.isRelative && l.equals(val.getIdent()))) { |
196 | 209 | hsl.setLightness(ac, val); |
197 | 210 | break; |
198 | 211 | } |
@@ -250,7 +263,8 @@ public static final HSL parseHSL(ApplContext ac, CssExpression exp, CssColor cal |
250 | 263 | hsl.setAlpha(ac, val); |
251 | 264 | break; |
252 | 265 | case CssTypes.CSS_IDENT: |
253 | | - if ((op != COMMA) && CssColor.none.equals(val.getIdent())) { |
| 266 | + if ((op != COMMA) && (CssColor.none.equals(val.getIdent()) || |
| 267 | + (hsl.isRelative && a.equals(val.getIdent())))) { |
254 | 268 | hsl.setAlpha(ac, val); |
255 | 269 | break; |
256 | 270 | } |
|
0 commit comments