|
1 |
| -// $Id$ |
| 1 | +// |
2 | 2 | // Author: Yves Lafon <ylafon@w3.org>
|
3 | 3 | //
|
4 |
| -// (c) COPYRIGHT MIT, ERCIM and Keio University, 2012. |
| 4 | +// (c) COPYRIGHT MIT, ERCIM, Keio, Beihang 2012, 2019. |
5 | 5 | // Please first read the full copyright statement in file COPYRIGHT.html
|
| 6 | + |
6 | 7 | package org.w3c.css.properties.css3;
|
7 | 8 |
|
8 | 9 | import org.w3c.css.properties.css.CssProperty;
|
|
20 | 21 | import static org.w3c.css.values.CssOperator.SPACE;
|
21 | 22 |
|
22 | 23 | /**
|
23 |
| - * @spec http://www.w3.org/TR/2012/WD-css3-transforms-20120911/#effects |
| 24 | + * @spec https://www.w3.org/TR/2019/CR-css-transforms-1-20190214/#propdef-transform |
24 | 25 | */
|
25 | 26 | public class CssTransform extends org.w3c.css.properties.css.CssTransform {
|
26 | 27 |
|
@@ -124,47 +125,69 @@ protected static void parseFunctionValues(ApplContext ac, CssValue func, CssProp
|
124 | 125 | String fname = function.getName().toLowerCase();
|
125 | 126 | // waiting for jdk7 for the string-based switch/case
|
126 | 127 |
|
127 |
| - // 2d functions |
128 |
| - if (matrix.equals(fname)) { |
129 |
| - parseExactlyNX(ac, function.getParameters(), 6, CssTypes.CSS_NUMBER, caller); |
130 |
| - } else if (translate.equals(fname)) { |
131 |
| - parseTranslateFunction(ac, function.getParameters(), caller); |
132 |
| - } else if (translateX.equals(fname) || translateY.equals(fname)) { |
133 |
| - parseTranslateAxisFunction(ac, function.getParameters(), caller); |
134 |
| - } else if (scale.equals(fname)) { |
135 |
| - parseAtMostX(ac, function.getParameters(), 2, CssTypes.CSS_NUMBER, caller); |
136 |
| - } else if (scaleX.equals(fname) || scaleY.equals(fname)) { |
137 |
| - parseOneX(ac, function.getParameters(), CssTypes.CSS_NUMBER, caller); |
138 |
| - } else if (rotate.equals(fname)) { |
139 |
| - parseOneX(ac, function.getParameters(), CssTypes.CSS_ANGLE, caller); |
140 |
| - } else if (skew.equals(fname)) { |
141 |
| - parseAtMostX(ac, function.getParameters(), 2, CssTypes.CSS_ANGLE, caller); |
142 |
| - } else if (skewX.equals(fname) || skewY.equals(fname)) { |
143 |
| - parseOneX(ac, function.getParameters(), CssTypes.CSS_ANGLE, caller); |
144 |
| - /* after this line, 3d functions */ |
145 |
| - } else if (matrix3d.equals(fname)) { |
146 |
| - parseExactlyNX(ac, function.getParameters(), 16, CssTypes.CSS_NUMBER, caller); |
147 |
| - } else if (translate3d.equals(fname)) { |
148 |
| - parseTranslate3dFunction(ac, function.getParameters(), caller); |
149 |
| - } else if (translateZ.endsWith(fname)) { |
150 |
| - parseOneX(ac, function.getParameters(), CssTypes.CSS_LENGTH, caller); |
151 |
| - } else if (scale3d.equals(fname)) { |
152 |
| - parseExactlyNX(ac, function.getParameters(), 3, CssTypes.CSS_NUMBER, caller); |
153 |
| - } else if (scaleZ.equals(fname)) { |
154 |
| - parseOneX(ac, function.getParameters(), CssTypes.CSS_NUMBER, caller); |
155 |
| - } else if (rotate3d.equals(fname)) { |
156 |
| - parseRotate3dFunction(ac, function.getParameters(), caller); |
157 |
| - } else if (rotateX.equals(fname) || rotateY.equals(fname) || rotateZ.equals(fname)) { |
158 |
| - parseOneX(ac, function.getParameters(), CssTypes.CSS_ANGLE, caller); |
159 |
| - } else if (perspective.endsWith(fname)) { |
160 |
| - parseOneX(ac, function.getParameters(), CssTypes.CSS_LENGTH, caller); |
161 |
| - } else { |
162 |
| - // unrecognized function |
163 |
| - throw new InvalidParamException("value", |
164 |
| - func.toString(), |
165 |
| - caller.getPropertyName(), ac); |
| 128 | + switch (fname) { |
| 129 | + // first, 2d functions |
| 130 | + case matrix: |
| 131 | + parseExactlyNX(ac, function.getParameters(), 6, CssTypes.CSS_NUMBER, caller); |
| 132 | + break; |
| 133 | + case translate: |
| 134 | + parseTranslateFunction(ac, function.getParameters(), caller); |
| 135 | + break; |
| 136 | + case translateX: |
| 137 | + case translateY: |
| 138 | + parseTranslateAxisFunction(ac, function.getParameters(), caller); |
| 139 | + break; |
| 140 | + case scale: |
| 141 | + parseAtMostX(ac, function.getParameters(), 2, CssTypes.CSS_NUMBER, caller); |
| 142 | + break; |
| 143 | + case scaleX: |
| 144 | + case scaleY: |
| 145 | + parseOneX(ac, function.getParameters(), CssTypes.CSS_NUMBER, caller); |
| 146 | + break; |
| 147 | + case rotate: |
| 148 | + parseOneX(ac, function.getParameters(), CssTypes.CSS_ANGLE, caller); |
| 149 | + break; |
| 150 | + case skew: |
| 151 | + parseAtMostX(ac, function.getParameters(), 2, CssTypes.CSS_ANGLE, caller); |
| 152 | + break; |
| 153 | + case skewX: |
| 154 | + case skewY: |
| 155 | + parseOneX(ac, function.getParameters(), CssTypes.CSS_ANGLE, caller); |
| 156 | + break; |
| 157 | + // 3d functions are only part of transform-2 |
| 158 | + // theyr are listed here as part of the 20120911 WD, not the transform-1 20190214 CR |
| 159 | + case matrix3d: |
| 160 | + parseExactlyNX(ac, function.getParameters(), 16, CssTypes.CSS_NUMBER, caller); |
| 161 | + break; |
| 162 | + case translate3d: |
| 163 | + parseTranslate3dFunction(ac, function.getParameters(), caller); |
| 164 | + break; |
| 165 | + case translateZ: |
| 166 | + parseOneX(ac, function.getParameters(), CssTypes.CSS_LENGTH, caller); |
| 167 | + break; |
| 168 | + case scale3d: |
| 169 | + parseExactlyNX(ac, function.getParameters(), 3, CssTypes.CSS_NUMBER, caller); |
| 170 | + break; |
| 171 | + case scaleZ: |
| 172 | + parseOneX(ac, function.getParameters(), CssTypes.CSS_NUMBER, caller); |
| 173 | + break; |
| 174 | + case rotate3d: |
| 175 | + parseRotate3dFunction(ac, function.getParameters(), caller); |
| 176 | + break; |
| 177 | + case rotateX: |
| 178 | + case rotateY: |
| 179 | + case rotateZ: |
| 180 | + parseOneX(ac, function.getParameters(), CssTypes.CSS_ANGLE, caller); |
| 181 | + break; |
| 182 | + case perspective: |
| 183 | + parseOneX(ac, function.getParameters(), CssTypes.CSS_LENGTH, caller); |
| 184 | + break; |
| 185 | + // unknown function |
| 186 | + default: |
| 187 | + throw new InvalidParamException("value", |
| 188 | + func.toString(), |
| 189 | + caller.getPropertyName(), ac); |
166 | 190 | }
|
167 |
| - |
168 | 191 | }
|
169 | 192 |
|
170 | 193 | private static void parseExactlyNX(ApplContext ac, CssExpression expression,
|
@@ -250,7 +273,7 @@ private static void parseOneX(ApplContext ac, CssExpression expression,
|
250 | 273 | // special cases
|
251 | 274 |
|
252 | 275 |
|
253 |
| - // http://www.w3.org/TR/2012/WD-css3-transforms-20120911/#translate-function |
| 276 | + // https://www.w3.org/TR/2019/CR-css-transforms-1-20190214/#funcdef-transform-translate |
254 | 277 | private static void parseTranslateFunction(ApplContext ac, CssExpression expression, CssProperty caller)
|
255 | 278 | throws InvalidParamException {
|
256 | 279 | if (expression.getCount() > 2) {
|
@@ -283,7 +306,7 @@ private static void parseTranslateFunction(ApplContext ac, CssExpression express
|
283 | 306 | }
|
284 | 307 | }
|
285 | 308 |
|
286 |
| - // http://www.w3.org/TR/2012/WD-css3-transforms-20120911/#translateX-function |
| 309 | + // https://www.w3.org/TR/2019/CR-css-transforms-1-20190214/#funcdef-transform-translatex |
287 | 310 | private static void parseTranslateAxisFunction(ApplContext ac, CssExpression expression, CssProperty caller)
|
288 | 311 | throws InvalidParamException {
|
289 | 312 | if (expression.getCount() > 1) {
|
|
0 commit comments