Skip to content

Commit a116ce4

Browse files
committed
string as numbers because that makes so much sense to not use something clearer
1 parent 2c05610 commit a116ce4

File tree

2 files changed

+63
-22
lines changed

2 files changed

+63
-22
lines changed

org/w3c/css/values/CssNumber.java

Lines changed: 45 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -73,24 +73,51 @@ public void set(String s, ApplContext ac)
7373
val = s;
7474
}
7575

76-
if (val.equalsIgnoreCase("pi")) {
77-
value = BigDecimal.valueOf(Math.PI);
78-
isInt = false;
79-
_strval = "pi";
80-
} else if (val.equalsIgnoreCase("e")) {
81-
value = BigDecimal.valueOf(Math.E);
82-
isInt = false;
83-
_strval = "e";
84-
} else {
85-
value = new BigDecimal(val);
86-
isInt = (val.indexOf('.') < 0);
87-
/* CSS integers are not value-based integers.
88-
try {
89-
value.toBigIntegerExact();
90-
isInt = true;
91-
} catch (ArithmeticException e) {
92-
isInt = false;
93-
} */
76+
switch (val.toLowerCase()) {
77+
case "pi":
78+
value = BigDecimal.valueOf(Math.PI);
79+
isInt = false;
80+
_strval = "pi";
81+
break;
82+
case "e":
83+
value = BigDecimal.valueOf(Math.E);
84+
isInt = false;
85+
_strval = "e";
86+
break;
87+
case "infinity":
88+
value = BigDecimal.valueOf(Double.POSITIVE_INFINITY);
89+
isInt = true;
90+
_strval = "infinity";
91+
break;
92+
// special case for relative colors treated as numbers
93+
// h, s, l, alpha, r, g, b, h, w, b, l, a, b, l, c, h
94+
// so a, alpha, b, c, g, h, l, r, s, w
95+
case "a":
96+
case "alpha":
97+
case "b":
98+
case "c":
99+
case "g":
100+
case "h":
101+
case "l":
102+
case "r":
103+
case "s":
104+
case "w":
105+
// Fake value as it is relative to the "from" color
106+
value = BigDecimal.ONE;
107+
isInt = true;
108+
_strval = "infinity";
109+
break;
110+
default:
111+
value = new BigDecimal(val);
112+
isInt = (val.indexOf('.') < 0);
113+
/* CSS integers are not value-based integers.
114+
try {
115+
value.toBigIntegerExact();
116+
isInt = true;
117+
} catch (ArithmeticException ex) {
118+
isInt = false;
119+
}
120+
*/
94121
}
95122
if (negate) {
96123
value = value.negate();

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

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.w3c.css.values.CssCheckableValue;
1414
import org.w3c.css.values.CssColor;
1515
import org.w3c.css.values.CssExpression;
16+
import org.w3c.css.values.CssIdent;
1617
import org.w3c.css.values.CssNumber;
1718
import org.w3c.css.values.CssTypes;
1819
import org.w3c.css.values.CssValue;
@@ -23,6 +24,15 @@
2324
import static org.w3c.css.values.CssOperator.SPACE;
2425

2526
public class LCH {
27+
public static final CssIdent l, c, h, a;
28+
29+
static {
30+
l = CssIdent.getIdent("l");
31+
c = CssIdent.getIdent("c");
32+
h = CssIdent.getIdent("h");
33+
a = CssIdent.getIdent("alpha");
34+
}
35+
2636
String output = null;
2737
CssValue vl, vc, vh, alpha;
2838
boolean faSet = false;
@@ -99,7 +109,8 @@ public static final LCH parseLCHColor(ApplContext ac, CssExpression exp, CssColo
99109
lch.setL(ac, val);
100110
break;
101111
case CssTypes.CSS_IDENT:
102-
if (CssColor.none.equals(val.getIdent())) {
112+
if (CssColor.none.equals(val.getIdent()) ||
113+
(lch.isRelative && l.equals(val.getIdent()))) {
103114
lch.setL(ac, val);
104115
break;
105116
}
@@ -127,7 +138,8 @@ public static final LCH parseLCHColor(ApplContext ac, CssExpression exp, CssColo
127138
lch.setC(ac, val);
128139
break;
129140
case CssTypes.CSS_IDENT:
130-
if (CssColor.none.equals(val.getIdent())) {
141+
if (CssColor.none.equals(val.getIdent()) ||
142+
(lch.isRelative && c.equals(val.getIdent()))) {
131143
lch.setC(ac, val);
132144
break;
133145
}
@@ -155,7 +167,8 @@ public static final LCH parseLCHColor(ApplContext ac, CssExpression exp, CssColo
155167
lch.setH(ac, val);
156168
break;
157169
case CssTypes.CSS_IDENT:
158-
if (CssColor.none.equals(val.getIdent())) {
170+
if (CssColor.none.equals(val.getIdent()) ||
171+
(lch.isRelative && h.equals(val.getIdent()))) {
159172
lch.setH(ac, val);
160173
break;
161174
}
@@ -194,7 +207,8 @@ public static final LCH parseLCHColor(ApplContext ac, CssExpression exp, CssColo
194207
lch.setAlpha(ac, val);
195208
break;
196209
case CssTypes.CSS_IDENT:
197-
if (CssColor.none.equals(val.getIdent())) {
210+
if (CssColor.none.equals(val.getIdent()) ||
211+
(lch.isRelative && a.equals(val.getIdent()))) {
198212
lch.setAlpha(ac, val);
199213
break;
200214
}

0 commit comments

Comments
 (0)