- From: CVS User ylafon <cvsmail@w3.org>
- Date: Tue, 18 Dec 2012 19:32:30 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/properties/css21 In directory roscoe:/tmp/cvs-serv1535/css21 Modified Files: CssElevation.java Log Message: elevation revamped --- /sources/public/2002/css-validator/org/w3c/css/properties/css21/CssElevation.java 2011/09/11 20:38:54 1.2 +++ /sources/public/2002/css-validator/org/w3c/css/properties/css21/CssElevation.java 2012/12/18 19:32:30 1.3 @@ -1,12 +1,11 @@ // -// $Id: CssElevation.java,v 1.2 2011/09/11 20:38:54 ylafon Exp $ +// $Id: CssElevation.java,v 1.3 2012/12/18 19:32:30 ylafon Exp $ // // (c) COPYRIGHT MIT, ERCIM and Keio University 2011 // Please first read the full copyright statement in file COPYRIGHT.html package org.w3c.css.properties.css21; -import org.w3c.css.properties.css.CssProperty; import org.w3c.css.util.ApplContext; import org.w3c.css.util.InvalidParamException; import org.w3c.css.values.CssAngle; @@ -15,159 +14,84 @@ import org.w3c.css.values.CssTypes; import org.w3c.css.values.CssValue; - /** * @spec http://www.w3.org/TR/2011/REC-CSS2-20110607/aural.html#propdef-elevation - * - * @version $Revision: 1.2 $ */ public class CssElevation extends org.w3c.css.properties.css.CssElevation { + public static final CssIdent[] allowed_values; - CssIdent identValue; - CssAngle angleValue; - - private static int[] hash_values; - private static CssIdent defaultValue; - private static String[] elValues = {"below", "level", "above", - "higher", "lower"}; - - - static { - defaultValue = new CssIdent("level"); - hash_values = new int[elValues.length]; - for (int i = 0; i < elValues.length; i++) - hash_values[i] = elValues[i].hashCode(); - } - - /** - * Create a new ACssElevation - */ - public CssElevation() { - } - - // check that the ident is a valid one - private boolean checkIdent(CssIdent ident) { - int hash = ident.hashCode(); - for (int h : hash_values) { - if (h == hash) { - return true; - } - } - return false; - } - - /** - * Creates a new ACssElevation - * - * @param expression The expression for this property - * @throws org.w3c.css.util.InvalidParamException - * Values are incorrect - */ - public CssElevation(ApplContext ac, CssExpression expression, - boolean check) throws InvalidParamException { - if (check && expression.getCount() > 1) { - throw new InvalidParamException("unrecognize", ac); - } - - CssValue val = expression.getValue(); - //int index; - setByUser(); - - switch (val.getType()) { - case CssTypes.CSS_IDENT: - CssIdent ident = (CssIdent) val; - if (inherit.equals(ident)) { - identValue = inherit; - expression.next(); - return; - } - if (checkIdent(ident)) { - identValue = ident; - expression.next(); - return; - } - throw new InvalidParamException("unrecognize", ac); - case CssTypes.CSS_ANGLE: - angleValue = (CssAngle) val; - float v = angleValue.getDegree(); - if (v > 90 && v < 270) { - throw new InvalidParamException("elevation.range", ac); - } - expression.next(); - return; - } - - throw new InvalidParamException("value", - expression.getValue().toString(), - getPropertyName(), ac); - } - - public CssElevation(ApplContext ac, CssExpression expression) - throws InvalidParamException { - this(ac, expression, false); - } - - /** - * Returns the value of this property - */ - public Object get() { - if (identValue != null) { - return identValue; - } - return angleValue; - } - - /** - * Returns true if this property is "softly" inherited - * e.g. his value is equals to inherit - */ - public boolean isSoftlyInherited() { - return inherit.equals(identValue); - } - - /** - * Returns a string representation of the object. - */ - public String toString() { - if (identValue != null) { - return identValue.toString(); - } - return angleValue.toString(); - } - - - /** - * Compares two properties for equality. - * - * @param property The other property. - */ - public boolean equals(CssProperty property) { - CssElevation other; - try { - other = (CssElevation) property; - } catch (ClassCastException cc) { - return false; - } - if (identValue != null) { - return ((angleValue == null) && (other.angleValue == null) && - (identValue.equals(other.identValue))); - } - return ((other.identValue == null) && - (angleValue.equals(other.angleValue))); - } - - - private CssIdent checkIdent(ApplContext ac, CssIdent ident) - throws InvalidParamException { - int hash = ident.hashCode(); - for (int i = 0; i < elValues.length; i++) { - if (hash_values[i] == hash) { - return ident; - } - } - - throw new InvalidParamException("value", ident.toString(), - getPropertyName(), ac); - } + static { + String[] _allowed_values = {"below", "level", "above", + "higher", "lower"}; + int i = 0; + allowed_values = new CssIdent[_allowed_values.length]; + for (String s : _allowed_values) { + allowed_values[i++] = CssIdent.getIdent(s); + } + } + + public static final CssIdent getAllowedIdent(CssIdent ident) { + for (CssIdent id : allowed_values) { + if (id.equals(ident)) { + return id; + } + } + return null; + } + + /** + * Create a new CssElevation + */ + public CssElevation() { + } + + /** + * Creates a new ACssElevation + * + * @param expression The expression for this property + * @throws org.w3c.css.util.InvalidParamException + * Values are incorrect + */ + public CssElevation(ApplContext ac, CssExpression expression, + boolean check) throws InvalidParamException { + if (check && expression.getCount() > 1) { + throw new InvalidParamException("unrecognize", ac); + } + + CssValue val = expression.getValue(); + setByUser(); + + switch (val.getType()) { + case CssTypes.CSS_ANGLE: + // TODO getAngle() + CssAngle a = (CssAngle) value; + float v = a.getDegree(); + if (v > 90 && v < 270) { + throw new InvalidParamException("elevation.range", ac); + } + value = val; + break; + case CssTypes.CSS_IDENT: + CssIdent ident = (CssIdent) val; + if (inherit.equals(ident)) { + value = inherit; + break; + } + value = getAllowedIdent(ident); + if (value != null) { + break; + } + default: + throw new InvalidParamException("value", + val.toString(), + getPropertyName(), ac); + } + expression.next(); + } + + public CssElevation(ApplContext ac, CssExpression expression) + throws InvalidParamException { + this(ac, expression, false); + } }
Received on Tuesday, 18 December 2012 19:32:31 UTC