|
13 | 13 | import org.w3c.css.values.CssCheckableValue; |
14 | 14 | import org.w3c.css.values.CssColor; |
15 | 15 | import org.w3c.css.values.CssExpression; |
| 16 | +import org.w3c.css.values.CssIdent; |
16 | 17 | import org.w3c.css.values.CssNumber; |
17 | 18 | import org.w3c.css.values.CssTypes; |
18 | 19 | import org.w3c.css.values.CssValue; |
|
23 | 24 | import static org.w3c.css.values.CssOperator.SPACE; |
24 | 25 |
|
25 | 26 | 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 | + |
26 | 36 | String output = null; |
27 | 37 | CssValue vl, vc, vh, alpha; |
28 | 38 | boolean faSet = false; |
@@ -99,7 +109,8 @@ public static final LCH parseLCHColor(ApplContext ac, CssExpression exp, CssColo |
99 | 109 | lch.setL(ac, val); |
100 | 110 | break; |
101 | 111 | 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()))) { |
103 | 114 | lch.setL(ac, val); |
104 | 115 | break; |
105 | 116 | } |
@@ -127,7 +138,8 @@ public static final LCH parseLCHColor(ApplContext ac, CssExpression exp, CssColo |
127 | 138 | lch.setC(ac, val); |
128 | 139 | break; |
129 | 140 | 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()))) { |
131 | 143 | lch.setC(ac, val); |
132 | 144 | break; |
133 | 145 | } |
@@ -155,7 +167,8 @@ public static final LCH parseLCHColor(ApplContext ac, CssExpression exp, CssColo |
155 | 167 | lch.setH(ac, val); |
156 | 168 | break; |
157 | 169 | 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()))) { |
159 | 172 | lch.setH(ac, val); |
160 | 173 | break; |
161 | 174 | } |
@@ -194,7 +207,8 @@ public static final LCH parseLCHColor(ApplContext ac, CssExpression exp, CssColo |
194 | 207 | lch.setAlpha(ac, val); |
195 | 208 | break; |
196 | 209 | 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()))) { |
198 | 212 | lch.setAlpha(ac, val); |
199 | 213 | break; |
200 | 214 | } |
|
0 commit comments