Skip to content

Commit c44e222

Browse files
authored
Merge pull request w3c#228 from w3c/transform-1-update
up-to-date with 20190214 transforms-1 CR.
2 parents 58a2fa2 + 5895557 commit c44e222

File tree

6 files changed

+317
-53
lines changed

6 files changed

+317
-53
lines changed

org/w3c/css/properties/CSS3Properties.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ backface-visibility: org.w3c.css.properties.css3.CssBackfaceV
196196
perspective: org.w3c.css.properties.css3.CssPerspective
197197
perspective-origin: org.w3c.css.properties.css3.CssPerspectiveOrigin
198198
transform-origin: org.w3c.css.properties.css3.CssTransformOrigin
199+
transform-box: org.w3c.css.properties.css3.CssTransformBox
199200
transform: org.w3c.css.properties.css3.CssTransform
200201

201202
# image
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
// $Id$
2+
// Author: Yves Lafon <ylafon@w3.org>
3+
//
4+
// (c) COPYRIGHT MIT, ERCIM and Keio University, 2012.
5+
// Please first read the full copyright statement in file COPYRIGHT.html
6+
package org.w3c.css.properties.css;
7+
8+
import org.w3c.css.parser.CssStyle;
9+
import org.w3c.css.properties.css3.Css3Style;
10+
import org.w3c.css.util.ApplContext;
11+
import org.w3c.css.util.InvalidParamException;
12+
import org.w3c.css.values.CssExpression;
13+
import org.w3c.css.values.CssValue;
14+
15+
/**
16+
* @since CSS3
17+
*/
18+
public class CssTransformBox extends CssProperty {
19+
20+
public CssValue value;
21+
22+
/**
23+
* Create a new CssTransformBox
24+
*/
25+
public CssTransformBox() {
26+
}
27+
28+
/**
29+
* Creates a new CssTransformBox
30+
*
31+
* @param expression The expression for this property
32+
* @throws org.w3c.css.util.InvalidParamException
33+
* Expressions are incorrect
34+
*/
35+
public CssTransformBox(ApplContext ac, CssExpression expression, boolean check)
36+
throws InvalidParamException {
37+
throw new InvalidParamException("value",
38+
expression.getValue().toString(),
39+
getPropertyName(), ac);
40+
}
41+
42+
public CssTransformBox(ApplContext ac, CssExpression expression)
43+
throws InvalidParamException {
44+
this(ac, expression, false);
45+
}
46+
47+
/**
48+
* Returns the value of this property
49+
*/
50+
public Object get() {
51+
return value;
52+
}
53+
54+
55+
/**
56+
* Returns the name of this property
57+
*/
58+
public final String getPropertyName() {
59+
return "transform-box";
60+
}
61+
62+
/**
63+
* Returns true if this property is "softly" inherited
64+
* e.g. his value is equals to inherit
65+
*/
66+
public boolean isSoftlyInherited() {
67+
return value.equals(inherit);
68+
}
69+
70+
/**
71+
* Returns a string representation of the object.
72+
*/
73+
public String toString() {
74+
return value.toString();
75+
}
76+
77+
/**
78+
* Add this property to the CssStyle.
79+
*
80+
* @param style The CssStyle
81+
*/
82+
public void addToStyle(ApplContext ac, CssStyle style) {
83+
Css3Style s = (Css3Style) style;
84+
if (s.cssTransformBox != null) {
85+
style.addRedefinitionWarning(ac, this);
86+
}
87+
s.cssTransformBox = this;
88+
}
89+
90+
91+
/**
92+
* Compares two properties for equality.
93+
*
94+
* @param property The other property.
95+
*/
96+
public boolean equals(CssProperty property) {
97+
return (property instanceof CssTransformBox &&
98+
value.equals(((CssTransformBox) property).value));
99+
}
100+
101+
102+
/**
103+
* Get this property in the style.
104+
*
105+
* @param style The style where the property is
106+
* @param resolve if true, resolve the style to find this property
107+
*/
108+
public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
109+
if (resolve) {
110+
return ((Css3Style) style).getTransformBox();
111+
} else {
112+
return ((Css3Style) style).cssTransformBox;
113+
}
114+
}
115+
}
116+

org/w3c/css/properties/css3/Css3Style.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@
191191
import org.w3c.css.properties.css.CssTextUnderlinePosition;
192192
import org.w3c.css.properties.css.CssTouchAction;
193193
import org.w3c.css.properties.css.CssTransform;
194+
import org.w3c.css.properties.css.CssTransformBox;
194195
import org.w3c.css.properties.css.CssTransformOrigin;
195196
import org.w3c.css.properties.css.CssTransformStyle;
196197
import org.w3c.css.properties.css.CssTransition;
@@ -438,6 +439,7 @@ public class Css3Style extends ATSCStyle {
438439
public CssPerspectiveOrigin cssPerspectiveOrigin;
439440
public CssTransformOrigin cssTransformOrigin;
440441
public CssTransform cssTransform;
442+
public CssTransformBox cssTransformBox;
441443

442444
public CssBoxSizing cssBoxSizing;
443445
public CssResize cssResize;
@@ -2293,6 +2295,15 @@ public CssTransform getTransform() {
22932295
return cssTransform;
22942296
}
22952297

2298+
public CssTransformBox getTransformBox() {
2299+
if (cssTransformBox == null) {
2300+
cssTransformBox =
2301+
(CssTransformBox) style.CascadingOrder(
2302+
new CssTransformBox(), style, selector);
2303+
}
2304+
return cssTransformBox;
2305+
}
2306+
22962307
public CssImeMode getImeMode() {
22972308
if (cssImeMode == null) {
22982309
cssImeMode =

org/w3c/css/properties/css3/CssTransform.java

Lines changed: 68 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
// $Id$
1+
//
22
// Author: Yves Lafon <ylafon@w3.org>
33
//
4-
// (c) COPYRIGHT MIT, ERCIM and Keio University, 2012.
4+
// (c) COPYRIGHT MIT, ERCIM, Keio, Beihang 2012, 2019.
55
// Please first read the full copyright statement in file COPYRIGHT.html
6+
67
package org.w3c.css.properties.css3;
78

89
import org.w3c.css.properties.css.CssProperty;
@@ -20,7 +21,7 @@
2021
import static org.w3c.css.values.CssOperator.SPACE;
2122

2223
/**
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
2425
*/
2526
public class CssTransform extends org.w3c.css.properties.css.CssTransform {
2627

@@ -124,47 +125,69 @@ protected static void parseFunctionValues(ApplContext ac, CssValue func, CssProp
124125
String fname = function.getName().toLowerCase();
125126
// waiting for jdk7 for the string-based switch/case
126127

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);
166190
}
167-
168191
}
169192

170193
private static void parseExactlyNX(ApplContext ac, CssExpression expression,
@@ -250,7 +273,7 @@ private static void parseOneX(ApplContext ac, CssExpression expression,
250273
// special cases
251274

252275

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
254277
private static void parseTranslateFunction(ApplContext ac, CssExpression expression, CssProperty caller)
255278
throws InvalidParamException {
256279
if (expression.getCount() > 2) {
@@ -283,7 +306,7 @@ private static void parseTranslateFunction(ApplContext ac, CssExpression express
283306
}
284307
}
285308

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
287310
private static void parseTranslateAxisFunction(ApplContext ac, CssExpression expression, CssProperty caller)
288311
throws InvalidParamException {
289312
if (expression.getCount() > 1) {

0 commit comments

Comments
 (0)