- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Fri, 04 May 2012 12:57:42 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/properties/css1 In directory hutz:/tmp/cvs-serv17000/css/properties/css1 Modified Files: CssBackground.java CssBackgroundAttachment.java CssBackgroundImage.java CssBackgroundRepeat.java Log Message: css1 background fixes Index: CssBackgroundImage.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css1/CssBackgroundImage.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- CssBackgroundImage.java 9 Feb 2012 17:36:28 -0000 1.6 +++ CssBackgroundImage.java 4 May 2012 12:57:40 -0000 1.7 @@ -12,6 +12,7 @@ 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.CssTypes; import org.w3c.css.values.CssValue; @@ -40,6 +41,9 @@ CssValue url = null; + protected static boolean checkMatchingIdent(CssIdent ident){ + return none.equals(ident); + } /** * Create a new CssBackgroundImage */ Index: CssBackgroundRepeat.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css1/CssBackgroundRepeat.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- CssBackgroundRepeat.java 9 Feb 2012 17:36:29 -0000 1.5 +++ CssBackgroundRepeat.java 4 May 2012 12:57:40 -0000 1.6 @@ -59,6 +59,15 @@ } } + protected static boolean checkMatchingIdent(CssIdent ident) { + for (CssIdent id : allowed_values.values()) { + if (id.equals(ident)) { + return true; + } + } + return false; + } + public CssValue value; Index: CssBackgroundAttachment.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css1/CssBackgroundAttachment.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- CssBackgroundAttachment.java 9 Feb 2012 17:36:28 -0000 1.6 +++ CssBackgroundAttachment.java 4 May 2012 12:57:40 -0000 1.7 @@ -15,7 +15,7 @@ import org.w3c.css.values.CssTypes; import org.w3c.css.values.CssValue; -import java.util.HashMap; +import java.util.ArrayList; /** * <H4> @@ -43,122 +43,135 @@ */ public class CssBackgroundAttachment extends org.w3c.css.properties.css.CssBackgroundAttachment { - private static HashMap<String, CssIdent> allowed_values; - private static CssIdent scroll; + private static ArrayList<CssIdent> allowed_values; + private static CssIdent scroll; - static { - allowed_values = new HashMap<String, CssIdent>(); - scroll = CssIdent.getIdent("scroll"); - allowed_values.put("scroll", scroll); - allowed_values.put("fixed", CssIdent.getIdent("fixed")); - } + static { + allowed_values = new ArrayList<CssIdent>(); + scroll = CssIdent.getIdent("scroll"); + allowed_values.add(scroll); + allowed_values.add(CssIdent.getIdent("fixed")); + } - CssIdent value; + protected static boolean checkMatchingIdent(CssIdent ident) { + return (null != getMatchingIdent(ident)); + } - /** - * Create a new CssBackgroundAttachment - */ - public CssBackgroundAttachment() { - value = scroll; - } + protected static CssIdent getMatchingIdent(CssIdent ident) { + for (CssIdent id : allowed_values) { + if (id.equals(ident)) { + return id; + } + } + return null; + } - /** - * Creates a new CssBackgroundAttachment - * - * @param expression The expression for this property - * @throws InvalidParamException Values are incorrect - */ - public CssBackgroundAttachment(ApplContext ac, CssExpression expression, - boolean check) throws InvalidParamException { + CssIdent value; - if (check && expression.getCount() > 1) { - throw new InvalidParamException("unrecognize", ac); - } + /** + * Create a new CssBackgroundAttachment + */ + public CssBackgroundAttachment() { + value = scroll; + } - setByUser(); + /** + * Creates a new CssBackgroundAttachment + * + * @param expression The expression for this property + * @throws InvalidParamException Values are incorrect + */ + public CssBackgroundAttachment(ApplContext ac, CssExpression expression, + boolean check) throws InvalidParamException { - CssValue val = expression.getValue(); + if (check && expression.getCount() > 1) { + throw new InvalidParamException("unrecognize", ac); + } - if (val.getType() == CssTypes.CSS_IDENT) { - CssIdent new_val = allowed_values.get(val.toString()); - if (new_val != null) { - value = new_val; - expression.next(); - return; - } - } - throw new InvalidParamException("value", expression.getValue(), - getPropertyName(), ac); - } + setByUser(); - public CssBackgroundAttachment(ApplContext ac, CssExpression expression) - throws InvalidParamException { - this(ac, expression, false); - } + CssValue val = expression.getValue(); - /** - * Returns the value of this property - */ - public Object get() { - return value; - } + if (val.getType() == CssTypes.CSS_IDENT) { + CssIdent new_val = getMatchingIdent((CssIdent)val); + if (new_val != null) { + value = new_val; + expression.next(); + return; + } + } + throw new InvalidParamException("value", expression.getValue(), + getPropertyName(), ac); + } - /** - * Returns true if this property is "softly" inherited - * e.g. his value equals inherit - */ - public boolean isSoftlyInherited() { - return false; - } + public CssBackgroundAttachment(ApplContext ac, CssExpression expression) + throws InvalidParamException { + this(ac, expression, false); + } - /** - * Returns a string representation of the object. - */ - public String toString() { - return value.toString(); - } + /** + * Returns the value of this property + */ + public Object get() { + return value; + } - /** - * Add this property to the CssStyle. - * - * @param style The CssStyle - */ - public void addToStyle(ApplContext ac, CssStyle style) { - org.w3c.css.properties.css.CssBackground cssBackground = ((Css1Style) style).cssBackground; - if (cssBackground.attachment != null) - style.addRedefinitionWarning(ac, this); - cssBackground.attachment = this; - } + /** + * Returns true if this property is "softly" inherited + * e.g. his value equals inherit + */ + public boolean isSoftlyInherited() { + return false; + } - /** - * Get this property in the style. - * - * @param style The style where the property is - * @param resolve if true, resolve the style to find this property - */ - public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) { - if (resolve) { - return ((Css1Style) style).getBackgroundAttachment(); - } else { - return ((Css1Style) style).cssBackground.attachment; - } - } + /** + * Returns a string representation of the object. + */ + public String toString() { + return value.toString(); + } - /** - * Compares two properties for equality. - * - * @param property The other property. - */ - public boolean equals(CssProperty property) { - return (property instanceof CssBackgroundAttachment && - value == ((CssBackgroundAttachment) property).value); - } + /** + * Add this property to the CssStyle. + * + * @param style The CssStyle + */ + public void addToStyle(ApplContext ac, CssStyle style) { + org.w3c.css.properties.css.CssBackground cssBackground = ((Css1Style) style).cssBackground; + if (cssBackground.attachment != null) + style.addRedefinitionWarning(ac, this); + cssBackground.attachment = this; + } - /** - * Is the value of this property is a default value. - * It is used by all macro for the function <code>print</code> - */ - public boolean isDefault() { - return (scroll == value); - } + /** + * Get this property in the style. + * + * @param style The style where the property is + * @param resolve if true, resolve the style to find this property + */ + public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) { + if (resolve) { + return ((Css1Style) style).getBackgroundAttachment(); + } else { + return ((Css1Style) style).cssBackground.attachment; + } + } + + /** + * Compares two properties for equality. + * + * @param property The other property. + */ + public boolean equals(CssProperty property) { + return (property instanceof CssBackgroundAttachment && + value == ((CssBackgroundAttachment) property).value); + } + + /** + * Is the value of this property is a default value. + * It is used by all macro for the function <code>print</code> + */ + public boolean isDefault() { + return (scroll == value); + } } Index: CssBackground.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css1/CssBackground.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- CssBackground.java 25 Apr 2012 20:21:55 -0000 1.9 +++ CssBackground.java 4 May 2012 12:57:39 -0000 1.10 @@ -12,6 +12,8 @@ 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.CssTypes; import org.w3c.css.values.CssValue; import static org.w3c.css.values.CssOperator.SPACE; @@ -78,74 +80,138 @@ public CssBackground(ApplContext ac, CssExpression expression, boolean check) throws InvalidParamException { - CssValue val; - char op; - boolean find = true; + CssValue val; + char op = SPACE; + boolean find = true; + CssExpression background_position_expression = null; - // too many values - if (check && expression.getCount() > 6) { - throw new InvalidParamException("unrecognize", ac); - } + // too many values + if (check && expression.getCount() > 6) { + throw new InvalidParamException("unrecognize", ac); + } - setByUser(); + setByUser(); - while (find) { - find = false; - val = expression.getValue(); - op = expression.getOperator(); + boolean manyValues = (expression.getCount() > 1); - if (val == null) { - break; - } + while (find) { + val = expression.getValue(); + if (val == null) { + break; + } + op = expression.getOperator(); - if (color == null) { - try { - color = new CssBackgroundColor(ac, expression); - find = true; - } catch (InvalidParamException e) { - } - } - if (!find && image == null) { - try { - image = new CssBackgroundImage(ac, expression); - find = true; - } catch (InvalidParamException e) { - // nothing to do, repeat will test this value - } - } - if (!find && repeat == null) { - try { - repeat = new CssBackgroundRepeat(ac, expression); - find = true; - } catch (InvalidParamException e) { - // nothing to do, attachment will test this value - } - } - if (!find && attachment == null) { - try { - attachment = new CssBackgroundAttachment(ac, expression); - find = true; - } catch (InvalidParamException e) { - // nothing to do, position will test this value - } - } - if (!find && position == null) { - try { - position = new CssBackgroundPosition(ac, expression); - find = true; - } catch (InvalidParamException e) { - // nothing to do - } - } - if (op != SPACE) { - throw new InvalidParamException("operator", - ((new Character(op)).toString()), - ac); - } - if (check && !find && val != null) { - throw new InvalidParamException("unrecognize", ac); - } - } + // if there are many values, we can't have inherit as one of them + if (manyValues && val.equals(inherit)) { + throw new InvalidParamException("unrecognize", null, null, ac); + } + + switch (val.getType()) { + case CssTypes.CSS_STRING: + if (check) { + throw new InvalidParamException("unrecognize", ac); + } + find = false; + break; + case CssTypes.CSS_URL: + if (image == null) { + image = new CssBackgroundImage(ac, expression); + continue; + } + find = false; + break; + case CssTypes.CSS_COLOR: + if (color == null) { + color = new CssBackgroundColor(ac, expression); + continue; + } + find = false; + break; + case CssTypes.CSS_NUMBER: + case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_LENGTH: + if (background_position_expression == null) { + background_position_expression = new CssExpression(); + } + background_position_expression.addValue(val); + expression.next(); + find = true; + break; + case CssTypes.CSS_IDENT: + // the hard part, as ident can be from different subproperties + find = false; + CssIdent identval = (CssIdent) val; + if (inherit.equals(identval) && !manyValues) { + find = true; + same = true; + expression.next(); + break; + } + // check background-image ident + if (CssBackgroundImage.checkMatchingIdent(identval)) { + if (image == null) { + image = new CssBackgroundImage(ac, expression); + find = true; + } + break; + } + // check background-repeat ident + if (CssBackgroundRepeat.checkMatchingIdent(identval)) { + if (repeat == null) { + repeat = new CssBackgroundRepeat(ac, expression); + find = true; + } + break; + } + // check background-attachment ident + if (CssBackgroundAttachment.checkMatchingIdent(identval)) { + if (attachment == null) { + attachment = new CssBackgroundAttachment(ac, expression); + find = true; + } + break; + } + // check background-position ident + if (CssBackgroundPosition.checkMatchingIdent(identval)) { + if (background_position_expression == null) { + background_position_expression = new CssExpression(); + } + background_position_expression.addValue(val); + expression.next(); + find = true; + break; + } + + if (color == null) { + try { + color = new CssBackgroundColor(ac, expression); + find = true; + break; + } catch (InvalidParamException e) { + // nothing to do, image will test this value + } + } + + default: + if (check) { + throw new InvalidParamException("unrecognize", ac); + } + find = false; + } + if (check && !find) { + throw new InvalidParamException("unrecognize", ac); + } + if (op != SPACE) { + throw new InvalidParamException("operator", + Character.toString(op), + ac); + } + } + if (background_position_expression != null) { + position = new CssBackgroundPosition(ac, + background_position_expression, + check); + } } public CssBackground(ApplContext ac, CssExpression expression)
Received on Friday, 4 May 2012 12:57:49 UTC