- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Fri, 12 Oct 2012 12:28:48 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/properties/css3 In directory hutz:/tmp/cvs-serv20884/css3 Modified Files: Css3Style.java Added Files: CssPerspectiveOrigin.java Log Message: perspective-origin per http://www.w3.org/TR/2012/WD-css3-transforms-20120911/#perspective-origin Index: Css3Style.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css3/Css3Style.java,v retrieving revision 1.125 retrieving revision 1.126 diff -u -d -r1.125 -r1.126 --- Css3Style.java 12 Oct 2012 09:01:52 -0000 1.125 +++ Css3Style.java 12 Oct 2012 12:28:46 -0000 1.126 @@ -72,6 +72,7 @@ import org.w3c.css.properties.css.CssOverflowStyle; import org.w3c.css.properties.css.CssOverflowWrap; import org.w3c.css.properties.css.CssPerspective; +import org.w3c.css.properties.css.CssPerspectiveOrigin; import org.w3c.css.properties.css.CssTabSize; import org.w3c.css.properties.css.CssTextAlignLast; import org.w3c.css.properties.css.CssTextDecorationColor; @@ -198,6 +199,7 @@ public CssTransformStyle cssTransformStyle; public CssBackfaceVisibility cssBackfaceVisibility; public CssPerspective cssPerspective; + public CssPerspectiveOrigin cssPerspectiveOrigin; CssDropInitialAfterAdjust cssDropInitialAfterAdjust; CssDropInitialAfterAlign cssDropInitialAfterAlign; @@ -1352,6 +1354,14 @@ return cssPerspective; } + public CssPerspectiveOrigin getPerspectiveOrigin() { + if (cssPerspectiveOrigin == null) { + cssPerspectiveOrigin = + (CssPerspectiveOrigin) style.CascadingOrder( + new CssPerspectiveOrigin(), style, selector); + } + return cssPerspectiveOrigin; + } /// /** --- NEW FILE: CssPerspectiveOrigin.java --- // $Id: CssPerspectiveOrigin.java,v 1.1 2012/10/12 12:28:46 ylafon Exp $ // Author: Jean-Guilhem Rouel // (c) COPYRIGHT MIT, ERCIM and Keio, 2005. // 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/#perspective-origin */ public class CssPerspectiveOrigin extends org.w3c.css.properties.css.CssPerspectiveOrigin { 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 CssBackgroundPosition */ public CssPerspectiveOrigin() { super(); } /** * Creates a new CssBackgroundPosition * * @param expression The expression for this property * @throws org.w3c.css.util.InvalidParamException * Values are incorrect */ public CssPerspectiveOrigin(ApplContext ac, CssExpression expression, boolean check) throws InvalidParamException { int nb_val = expression.getCount(); if (check && nb_val > 2) { 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 > 2 || 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); } } } } public CssPerspectiveOrigin(ApplContext ac, CssExpression expression) throws InvalidParamException { this(ac, expression, false); } }
Received on Friday, 12 October 2012 12:28:53 UTC