|
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