Skip to content

Commit b169014

Browse files
committed
h,s,l,alpha values in relative mode
1 parent 05f0dbc commit b169014

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

org/w3c/css/values/color/HSL.java

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.w3c.css.values.CssCheckableValue;
1515
import org.w3c.css.values.CssColor;
1616
import org.w3c.css.values.CssExpression;
17+
import org.w3c.css.values.CssIdent;
1718
import org.w3c.css.values.CssNumber;
1819
import org.w3c.css.values.CssPercentage;
1920
import org.w3c.css.values.CssTypes;
@@ -27,6 +28,15 @@
2728
import static org.w3c.css.values.CssOperator.SPACE;
2829

2930
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+
3040
String output = null;
3141
CssValue vh, vs, vl, va;
3242
boolean isRelative = false;
@@ -130,7 +140,8 @@ public static final HSL parseHSL(ApplContext ac, CssExpression exp, CssColor cal
130140
hsl.setHue(ac, val);
131141
break;
132142
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()))) {
134145
hsl.setHue(ac, val);
135146
break;
136147
}
@@ -162,7 +173,8 @@ public static final HSL parseHSL(ApplContext ac, CssExpression exp, CssColor cal
162173
hsl.setSaturation(ac, val);
163174
break;
164175
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()))) {
166178
hsl.setSaturation(ac, val);
167179
break;
168180
}
@@ -192,7 +204,8 @@ public static final HSL parseHSL(ApplContext ac, CssExpression exp, CssColor cal
192204
hsl.setLightness(ac, val);
193205
break;
194206
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()))) {
196209
hsl.setLightness(ac, val);
197210
break;
198211
}
@@ -250,7 +263,8 @@ public static final HSL parseHSL(ApplContext ac, CssExpression exp, CssColor cal
250263
hsl.setAlpha(ac, val);
251264
break;
252265
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())))) {
254268
hsl.setAlpha(ac, val);
255269
break;
256270
}

0 commit comments

Comments
 (0)