2002/css-validator/org/w3c/css/properties/css3 CssTransformOrigin.java,NONE,1.1 Css3Style.java,1.126,1.127

Update of /sources/public/2002/css-validator/org/w3c/css/properties/css3
In directory hutz:/tmp/cvs-serv26635/css3

Modified Files:
	Css3Style.java 
Added Files:
	CssTransformOrigin.java 
Log Message:
transform-origin per http://www.w3.org/TR/2012/WD-css3-transforms-20120911/#transform-origin

Index: Css3Style.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css3/Css3Style.java,v
retrieving revision 1.126
retrieving revision 1.127
diff -u -d -r1.126 -r1.127
--- Css3Style.java	12 Oct 2012 12:28:46 -0000	1.126
+++ Css3Style.java	12 Oct 2012 12:41:29 -0000	1.127
@@ -85,6 +85,7 @@
 import org.w3c.css.properties.css.CssTextEmphasisStyle;
 import org.w3c.css.properties.css.CssTextJustify;
 import org.w3c.css.properties.css.CssTextUnderlinePosition;
+import org.w3c.css.properties.css.CssTransformOrigin;
 import org.w3c.css.properties.css.CssTransformStyle;
 import org.w3c.css.properties.css.CssTransition;
 import org.w3c.css.properties.css.CssTransitionDelay;
@@ -200,7 +201,8 @@
 	public CssBackfaceVisibility cssBackfaceVisibility;
 	public CssPerspective cssPerspective;
 	public CssPerspectiveOrigin cssPerspectiveOrigin;
-	
+	public CssTransformOrigin cssTransformOrigin;
+
 	CssDropInitialAfterAdjust cssDropInitialAfterAdjust;
 	CssDropInitialAfterAlign cssDropInitialAfterAlign;
 	CssDropInitialBeforeAdjust cssDropInitialBeforeAdjust;
@@ -1100,7 +1102,7 @@
 		}
 		return cssAnimation;
 	}
-	
+
 	public CssAnimationDelay getAnimationDelay() {
 		if (cssAnimationDelay == null) {
 			cssAnimationDelay =
@@ -1118,7 +1120,7 @@
 		}
 		return cssAnimationDirection;
 	}
-	
+
 	public CssAnimationDuration getAnimationDuration() {
 		if (cssAnimationDuration == null) {
 			cssAnimationDuration =
@@ -1136,7 +1138,7 @@
 		}
 		return cssAnimationIterationCount;
 	}
-	
+
 	public CssAnimationName getAnimationName() {
 		if (cssAnimationName == null) {
 			cssAnimationName =
@@ -1362,6 +1364,16 @@
 		}
 		return cssPerspectiveOrigin;
 	}
+
+	public CssTransformOrigin getTransformOrigin() {
+		if (cssTransformOrigin == null) {
+			cssTransformOrigin =
+					(CssTransformOrigin) style.CascadingOrder(
+							new CssTransformOrigin(), style, selector);
+		}
+		return cssTransformOrigin;
+	}
+
 	///
 
 	/**

--- NEW FILE: CssTransformOrigin.java ---
// $Id: CssTransformOrigin.java,v 1.1 2012/10/12 12:41:29 ylafon Exp $
// Author: Yves Lafon <ylafon@w3.org>
//
// (c) COPYRIGHT MIT, ERCIM and Keio University, 2012.
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.css.properties.css3;

import org.w3c.css.util.ApplContext;
import org.w3c.css.util.InvalidParamException;
import org.w3c.css.values.CssExpression;
import org.w3c.css.values.CssIdent;
import org.w3c.css.values.CssLength;
import org.w3c.css.values.CssTypes;
import org.w3c.css.values.CssValue;
import org.w3c.css.values.CssValueList;

import java.util.ArrayList;

import static org.w3c.css.values.CssOperator.SPACE;

/**
 * @spec http://www.w3.org/TR/2012/WD-css3-transforms-20120911/#transform-origin
 */
public class CssTransformOrigin extends org.w3c.css.properties.css.CssTransformOrigin {

	public static CssIdent[] allowed_values;
	public static CssIdent center, top, bottom, left, right;

	static {
		top = CssIdent.getIdent("top");
		bottom = CssIdent.getIdent("bottom");
		left = CssIdent.getIdent("left");
		right = CssIdent.getIdent("right");
		center = CssIdent.getIdent("center");
		allowed_values = new CssIdent[5];
		allowed_values[0] = top;
		allowed_values[1] = bottom;
		allowed_values[2] = left;
		allowed_values[3] = right;
		allowed_values[4] = center;
	}

	public static CssIdent getMatchingIdent(CssIdent ident) {
		for (CssIdent id : allowed_values) {
			if (id.equals(ident)) {
				return id;
			}
		}
		return null;
	}

	public boolean isVerticalIdent(CssIdent ident) {
		return top.equals(ident) || center.equals(ident) || bottom.equals(ident);
	}

	public boolean isHorizontalIdent(CssIdent ident) {
		return left.equals(ident) || center.equals(ident) || right.equals(ident);
	}

	/**
	 * Create a new CssTransformOrigin
	 */
	public CssTransformOrigin() {
		super();
	}

	/**
	 * Creates a new CssTransformOrigin
	 *
	 * @param expression The expression for this property
	 * @throws org.w3c.css.util.InvalidParamException
	 *          Values are incorrect
	 */
	public CssTransformOrigin(ApplContext ac, CssExpression expression,
							  boolean check) throws InvalidParamException {

		int nb_val = expression.getCount();

		if (check && nb_val > 3) {
			throw new InvalidParamException("unrecognize", ac);
		}

		setByUser();
		CssValue val;
		char op;
		ArrayList<CssValue> values = new ArrayList<CssValue>();

		// we just accumulate values and check at validation
		while (!expression.end()) {
			val = expression.getValue();
			op = expression.getOperator();

			if (inherit.equals(val)) {
				if (expression.getCount() > 1) {
					throw new InvalidParamException("value", val,
							getPropertyName(), ac);
				}
				value = inherit;
				expression.next();
				return;
			}
			// we will check later
			values.add(val);
			expression.next();

			if (op != SPACE) {
				throw new InvalidParamException("operator",
						((new Character(op)).toString()), ac);
			}
		}
		// if we reach the end in a value that can come in pair
		check(values, ac);
		value = (values.size() == 1) ? values.get(0) : new CssValueList(values);
	}

	// check the value

	private void check(ArrayList<CssValue> values, ApplContext ac)
			throws InvalidParamException {
		int nb_keyword = 0;
		int nb_values = values.size();

		if (nb_values > 3 || nb_values == 0) {
			throw new InvalidParamException("unrecognize", ac);
		}
		// basic check
		for (CssValue aValue : values) {
			switch (aValue.getType()) {
				case CssTypes.CSS_NUMBER:
				case CssTypes.CSS_LENGTH:
					CssLength len = aValue.getLength();
					break;
				case CssTypes.CSS_PERCENTAGE:
					break;
				case CssTypes.CSS_IDENT:
					nb_keyword++;
					break;
				default:
					throw new InvalidParamException("value", aValue,
							getPropertyName(), ac);
			}
		}
		// then we need to ckeck the values if we got two values and
		// at least one keyword (as restrictions may occur)
		if (nb_keyword > 0 && nb_values >= 2) {
			CssValue v = values.get(0);
			if (v.getType() == CssTypes.CSS_IDENT) {
				CssIdent id = (CssIdent) v;
				if (!isHorizontalIdent(id)) {
					throw new InvalidParamException("value", id,
							getPropertyName(), ac);
				}
			}
			v = values.get(1);
			if (v.getType() == CssTypes.CSS_IDENT) {
				CssIdent id = (CssIdent) v;
				if (!isVerticalIdent(id)) {
					throw new InvalidParamException("value", id,
							getPropertyName(), ac);
				}
			}
		}
		// if we got 3 values, the last one must be a length
		// (number 0 has been validated before, so number is admissible)
		if (nb_values == 3) {
			CssValue v = values.get(2);
			if (v.getType() != CssTypes.CSS_LENGTH &&
				v.getType() != CssTypes.CSS_NUMBER) {
				throw new InvalidParamException("value", v,
						getPropertyName(), ac);
			}
		}
	}

	public CssTransformOrigin(ApplContext ac, CssExpression expression)
			throws InvalidParamException {
		this(ac, expression, false);
	}
}

Received on Friday, 12 October 2012 12:41:36 UTC