- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Tue, 04 Oct 2011 13:05:26 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/properties/css
In directory hutz:/tmp/cvs-serv17942/org/w3c/css/properties/css
Modified Files:
CssBackground.java CssBackgroundAttachment.java
CssBackgroundClip.java CssBackgroundColor.java
CssBackgroundImage.java CssBackgroundOrigin.java
CssBackgroundPosition.java CssBackgroundRepeat.java
CssBackgroundSize.java CssColumnRule.java
CssColumnRuleColor.java
Added Files:
CssColor.java
Log Message:
some reordering to have only one background-color to check in checkConflicts (like what was done for CssColors
Index: CssBackgroundRepeat.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css/CssBackgroundRepeat.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- CssBackgroundRepeat.java 22 Jan 2010 10:51:17 -0000 1.4
+++ CssBackgroundRepeat.java 4 Oct 2011 13:05:24 -0000 1.5
@@ -11,15 +11,6 @@
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 org.w3c.css.values.CssValueList;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import static org.w3c.css.values.CssOperator.COMMA;
-import static org.w3c.css.values.CssOperator.SPACE;
/**
* http://www.w3.org/TR/2009/CR-css3-background-20091217/#the-background-repeat
@@ -40,40 +31,18 @@
* round | no-repeat]{1,2}
*/
public class CssBackgroundRepeat extends CssProperty {
-
- private static final String propertyName = "background-repeat";
public final static CssIdent repeat;
- private static HashMap<String, CssIdent> allowed_simple_values;
- private static HashMap<String, CssIdent> allowed_double_values;
static {
- allowed_simple_values = new HashMap<String, CssIdent>();
- allowed_double_values = new HashMap<String, CssIdent>();
- String[] REPEAT = {"repeat", "space", "round", "no-repeat"};
-
- allowed_simple_values.put("repeat-x", CssIdent.getIdent("repeat-x"));
- allowed_simple_values.put("repeat-y", CssIdent.getIdent("repeat-y"));
-
- for (String aREPEAT : REPEAT) {
- allowed_double_values.put(aREPEAT, CssIdent.getIdent(aREPEAT));
- }
repeat = CssIdent.getIdent("repeat");
}
- public static boolean isMatchingIdent(CssIdent ident) {
- String id = ident.toString();
-
- return (allowed_simple_values.containsKey(id) ||
- allowed_double_values.containsKey(id));
- }
-
public Object value;
/**
* Create a new CssBackgroundRepeat
*/
public CssBackgroundRepeat() {
- value = repeat;
}
/**
@@ -86,90 +55,7 @@
*/
public CssBackgroundRepeat(ApplContext ac, CssExpression expression,
boolean check) throws InvalidParamException {
-
- ArrayList<CssValue> values = new ArrayList<CssValue>();
- boolean is_complete = true;
- CssValue val;
- CssValueList vl = null;
- char op;
-
- setByUser();
-
- while (!expression.end()) {
- val = expression.getValue();
- op = expression.getOperator();
-
- // not an ident? fail
- if (val.getType() != CssTypes.CSS_IDENT) {
- throw new InvalidParamException("value", expression.getValue(),
- getPropertyName(), ac);
- }
-
- CssIdent id_val = (CssIdent) val;
- if (inherit.equals(id_val)) {
- // if we got inherit after other values, fail
- // if we got more than one value... fail
- if ((values.size() > 0) || (expression.getCount() > 1)) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- values.add(inherit);
- } else {
- String id_value = id_val.toString();
- CssIdent new_val;
- // check values that must be alone
- new_val = allowed_simple_values.get(id_value);
- if (new_val != null) {
- // if we already have a double value... it's an error
- if (!is_complete) {
- throw new InvalidParamException("value",
- val, getPropertyName(), ac);
- }
- values.add(new_val);
- is_complete = true;
- } else {
- // the the one that may come in pairs
- new_val = allowed_double_values.get(id_value);
- // not an allowed value !
- if (new_val == null) {
- throw new InvalidParamException("value",
- val, getPropertyName(), ac);
- }
- if (is_complete) {
- vl = new CssValueList();
- vl.add(new_val);
- } else {
- vl.add(new_val);
- values.add(vl);
- }
- is_complete = !is_complete;
- }
- }
-
- expression.next();
- if (!expression.end()) {
- // incomplete value followed by a comma... it's complete!
- if (!is_complete && (op == COMMA)) {
- values.add(vl);
- is_complete = true;
- }
- // complete values are separated by a comma, otherwise space
- if ((is_complete && (op != COMMA)) ||
- (!is_complete && (op != SPACE))) {
- throw new InvalidParamException("operator",
- ((new Character(op)).toString()), ac);
- }
- }
- }
- // if we reach the end in a value that can come in pair
- if (!is_complete) {
- values.add(vl);
- }
- if (values.size() == 1) {
- value = values.get(0);
- } else {
- value = values;
- }
+ throw new InvalidParamException("unrecognize", ac);
}
@@ -202,15 +88,6 @@
* Returns a string representation of the object.
*/
public String toString() {
- if (value instanceof ArrayList) {
- ArrayList values = (ArrayList) value;
- StringBuilder sb = new StringBuilder();
- for (Object aValue : values) {
- sb.append(aValue.toString()).append(", ");
- }
- sb.setLength(sb.length() - 2);
- return sb.toString();
- }
return value.toString();
}
@@ -218,7 +95,7 @@
* Returns the name of this property
*/
public final String getPropertyName() {
- return propertyName;
+ return "background-repeat";
}
/**
@@ -262,7 +139,7 @@
* It is used by all macro for the function <code>print</code>
*/
public boolean isDefault() {
- return (repeat == value);
+ return false;
}
}
Index: CssColumnRuleColor.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css/CssColumnRuleColor.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- CssColumnRuleColor.java 5 Jan 2010 19:49:50 -0000 1.2
+++ CssColumnRuleColor.java 4 Oct 2011 13:05:24 -0000 1.3
@@ -9,7 +9,6 @@
package org.w3c.css.properties.css;
import org.w3c.css.parser.CssStyle;
-import org.w3c.css.properties.css1.CssColor;
import org.w3c.css.properties.css3.Css3Style;
import org.w3c.css.util.ApplContext;
import org.w3c.css.util.InvalidParamException;
@@ -61,14 +60,13 @@
if (check && expression.getCount() > 1) {
throw new InvalidParamException("unrecognize", ac);
}
-
if (inherit.equals(val)) {
color = inherit;
} else {
try {
// we use the latest version of CssColor, aka CSS3
- // instead of using CSS21 colors + transparent per spec.
- CssColor tcolor = new CssColor(ac, expression, check);
+ // instead of using CSS21 colors + transparent per spec
+ org.w3c.css.properties.css3.CssColor tcolor = new org.w3c.css.properties.css3.CssColor(ac, expression, check);
color = tcolor.getColor();
} catch (InvalidParamException e) {
throw new InvalidParamException("value",
Index: CssBackgroundAttachment.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css/CssBackgroundAttachment.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- CssBackgroundAttachment.java 22 Jan 2010 10:51:16 -0000 1.4
+++ CssBackgroundAttachment.java 4 Oct 2011 13:05:23 -0000 1.5
@@ -8,54 +8,16 @@
import org.w3c.css.parser.CssStyle;
import org.w3c.css.properties.css1.Css1Style;
+import org.w3c.css.properties.css3.Css3Style;
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 java.util.ArrayList;
-import java.util.HashMap;
-
-import static org.w3c.css.values.CssOperator.COMMA;
/**
- * http://www.w3.org/TR/2009/CR-css3-background-20091217/#the-background-attachment
- * Name: background-attachment
- * Value: <attachment> [ , <attachment> ]*
- * Initial: scroll
- * Applies to: all elements
- * Inherited: no
- * Percentages: N/A
- * Media: visual
- * Computed value: as specified
*
- * If background images are specified, this property specifies whether they
- * are fixed with regard to the viewport ('fixed') or scroll along with the
- * element ('scroll') or its contents ('local'). The property's value is given
- * as a comma-separated list of <attachment> keywords where
- *
- * <attachment> = scroll | fixed | local
*/
public class CssBackgroundAttachment extends CssProperty {
- private static final String propertyName = "background-attachment";
-
- private static HashMap<String, CssIdent> allowed_values;
- public 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"));
- allowed_values.put("local", CssIdent.getIdent("local"));
- }
-
- public static boolean isMatchingIdent(CssIdent ident) {
- return allowed_values.containsKey(ident.toString());
- }
Object value;
@@ -63,7 +25,6 @@
* Create a new CssBackgroundAttachment
*/
public CssBackgroundAttachment() {
- value = scroll;
}
public void set(Object val) {
@@ -73,57 +34,17 @@
/**
* Creates a new CssBackgroundAttachment
*
- * @param ac the context
+ * @param ac the context
* @param expression The expression for this property
- * @param check if some length checking is required
+ * @param check if some length checking is required
* @throws InvalidParamException Values are incorrect
*/
public CssBackgroundAttachment(ApplContext ac, CssExpression expression,
boolean check) throws InvalidParamException {
- ArrayList<CssValue> values = new ArrayList<CssValue>();
- char op;
- CssValue val;
-
- setByUser();
- while (!expression.end()) {
- val = expression.getValue();
- op = expression.getOperator();
- if (val.getType() != CssTypes.CSS_IDENT) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- if (inherit.equals(val)) {
- // if we got inherit after other values, fail
- // if we got more than one value... fail
- if ((values.size() > 0) || (expression.getCount() > 1)) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- values.add(inherit);
- } else {
- // check that it's in the allowed values
- CssValue new_val = allowed_values.get(val.toString());
- if (new_val == null) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- values.add(new_val);
- }
- expression.next();
- // and check that values are separated by commas
- if (!expression.end() && (op != COMMA)) {
- throw new InvalidParamException("operator",
- ((new Character(op)).toString()), ac);
- }
- }
+ throw new InvalidParamException("unrecognize", ac);
- if (values.size() == 1) {
- value = values.get(0);
- } else {
- value = values;
- }
}
public CssBackgroundAttachment(ApplContext ac, CssExpression expression)
@@ -150,15 +71,6 @@
* Returns a string representation of the object.
*/
public String toString() {
- if (value instanceof ArrayList) {
- ArrayList values = (ArrayList) value;
- StringBuilder sb = new StringBuilder();
- for (Object aValue : values) {
- sb.append(aValue.toString()).append(", ");
- }
- sb.setLength(sb.length() - 2);
- return sb.toString();
- }
return value.toString();
}
@@ -166,7 +78,7 @@
* Returns the name of this property
*/
public final String getPropertyName() {
- return propertyName;
+ return "background-attachment";
}
/**
@@ -175,10 +87,10 @@
* @param style The CssStyle
*/
public void addToStyle(ApplContext ac, CssStyle style) {
- CssBackground cssBackground = ((Css1Style) style).cssBackground;
- if (cssBackground.attachment != null)
+ if (((Css3Style) style).cssBackground.attachment != null)
style.addRedefinitionWarning(ac, this);
- cssBackground.attachment = this;
+ ((Css3Style) style).cssBackground.attachment = this;
+
}
/**
@@ -210,6 +122,6 @@
* It is used by all macro for the function <code>print</code>
*/
public boolean isDefault() {
- return (scroll == value);
+ return false;
}
}
Index: CssBackground.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css/CssBackground.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- CssBackground.java 9 Sep 2011 12:16:43 -0000 1.9
+++ CssBackground.java 4 Oct 2011 13:05:23 -0000 1.10
@@ -6,80 +6,30 @@
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.css.properties.css;
-import org.w3c.css.parser.CssSelectors;
import org.w3c.css.parser.CssStyle;
import org.w3c.css.properties.css1.Css1Style;
import org.w3c.css.util.ApplContext;
import org.w3c.css.util.InvalidParamException;
import org.w3c.css.values.CssColor;
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 org.w3c.css.values.CssValueList;
-
-import java.util.ArrayList;
-
-import static org.w3c.css.values.CssOperator.COMMA;
-import static org.w3c.css.values.CssOperator.SLASH;
-import static org.w3c.css.values.CssOperator.SPACE;
/**
- * http://www.w3.org/TR/2009/CR-css3-background-20091217/#the-background
- * <p/>
- * Name: background
- * Value: [ <bg-layer> , ]* <final-bg-layer>
- * Initial: see individual properties
- * Applies to: all elements
- * Inherited: no
- * Percentages: see individual properties
- * Media: visual
- * Computed value: see individual properties
- * <p/>
- * Where
- * <p/>
- * <bg-layer> = <bg-image> || <bg-position> ||
- * / <bg-size> || <repeat-style> || <attachment> ||
- * <bg-origin>
- * <p/>
- * where ‘<bg-position>’ must occur before ‘/ <bg-size>’ if both
- * are present.
- * <p/>
- * <final-bg-layer> = <bg-image> || <bg-position> ||
- * / <bg-size> || <repeat-style> || <attachment> ||
- * <bg-origin> || <'background-color'>
- * <p/>
- * where ‘<bg-position>’ must not occur before ‘/ <bg-size>’ if
- * both are present.
- * <p/>
- * Note that a color is permitted in <final-bg-layer>, but
- * not in <bg-layer>.
- *
- * @see CssBackgroundColor
- * @see CssBackgroundImage
- * @see CssBackgroundRepeat
- * @see CssBackgroundAttachment
- * @see CssBackgroundPosition
- * @see CssBackgroundSize
*/
public class CssBackground extends CssProperty {
- private static final String propertyName = "background";
-
Object value;
public CssColor _color;
- // TODO get rid of those or reformat them
public CssBackgroundColor color;
-
public CssBackgroundImage image;
public CssBackgroundRepeat repeat;
public CssBackgroundAttachment attachment;
public CssBackgroundPosition position;
public CssBackgroundSize size;
- boolean same;
+ public boolean same;
/**
* Create a new CssBackground
@@ -108,596 +58,17 @@
*/
public CssBackground(ApplContext ac, CssExpression expression,
boolean check) throws InvalidParamException {
+ throw new InvalidParamException("unrecognize", ac);
- setByUser();
- CssValue val;
- ArrayList<CssBackgroundValue> values;
- CssExpression single_layer = null;
- CssBackgroundValue b_val = null;
- char op;
-
- values = new ArrayList<CssBackgroundValue>();
- // 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;
- }
- if (single_layer == null) {
- single_layer = new CssExpression();
- }
- // we will check later
- single_layer.addValue(val);
- single_layer.setOperator(op);
- expression.next();
-
- if (!expression.end()) {
- // incomplete value followed by a comma... it's complete!
- if (op == COMMA) {
- single_layer.setOperator(SPACE);
- b_val = check(ac, single_layer, check, false);
- values.add(b_val);
- single_layer = null;
- } else if ((op != SPACE) && (op != SLASH)) {
- throw new InvalidParamException("operator",
- ((new Character(op)).toString()), ac);
- }
- }
- }
- // if we reach the end in a value that can come in pair
- if (single_layer != null) {
- b_val = check(ac, single_layer, check, true);
- values.add(b_val);
- }
- if (values.size() == 1) {
- value = values.get(0);
- } else {
- value = values;
- }
- transform_into_individual_values();
- }
-
- private Object getCssBackgroundRepeatValue(ApplContext ac,
- CssExpression expression,
- boolean check)
- throws InvalidParamException {
- char op = expression.getOperator();
- CssExpression exp = new CssExpression();
-
- exp.addValue(expression.getValue());
- CssBackgroundRepeat bg_size;
- repeat = new CssBackgroundRepeat(ac, exp, check);
- // now check if we can add a second value ;)
- if ((op == SPACE) && !expression.end()) {
- expression.next();
- if (!expression.end()) {
- CssValue val = expression.getValue();
- if ((val.getType() == CssTypes.CSS_IDENT) &&
- (CssBackgroundRepeat.isMatchingIdent((CssIdent) val))) {
- exp.addValue(expression.getValue());
- exp.starts();
- try {
- repeat = new CssBackgroundRepeat(ac, exp, check);
- } catch (InvalidParamException ipe) {
- expression.precedent();
- }
- } else {
- expression.precedent();
- }
- }
- }
- return repeat.get();
- }
-
- private Object getCssBackgroundSizeValue(ApplContext ac,
- CssExpression expression,
- boolean check)
- throws InvalidParamException {
- char op = expression.getOperator();
- CssExpression exp = new CssExpression();
-
- exp.addValue(expression.getValue());
- CssBackgroundSize bg_size;
- bg_size = new CssBackgroundSize(ac, exp, check);
- // now check if we can add a second value ;)
- // TODO really dirty.. must check the use of 'check'
- // here, and possibly adjust the parsing model in
- // other classes :(
- if ((op == SPACE) && !expression.end()) {
- expression.next();
- if (!expression.end()) {
- exp.addValue(expression.getValue());
- exp.starts();
- try {
- bg_size = new CssBackgroundSize(ac, exp, check);
- } catch (InvalidParamException ipe) {
- // roll back
- expression.precedent();
- }
- }
- }
- return bg_size.get();
- }
-
-
- private Object getCssBackgroundPositionValue(ApplContext ac,
- CssExpression expression,
- boolean check)
- throws InvalidParamException {
- CssExpression exp = new CssExpression();
- char op = expression.getOperator();
- exp.addValue(expression.getValue());
- int last_val = -1;
-
- CssBackgroundPosition bg_pos;
- bg_pos = new CssBackgroundPosition(ac, exp, check);
- // good we have a valid value, try something better..
- expression.mark();
- // we MUST try all the cases, as we can have something
- // invalid using 3 values (incompatible definitions)
- // but valid using 4 values...
- // example top 12% is invalid, top 12% center is valid...
- for (int i = 0; i < 3; i++) {
- if ((op == SPACE) && !expression.end()) {
- expression.next();
- if (expression.end()) {
- break;
- }
- exp.addValue(expression.getValue());
- exp.starts();
- try {
- bg_pos = new CssBackgroundPosition(ac, exp, check);
- last_val = i;
- } catch (InvalidParamException ipe) {
- }
-
- }
- }
- expression.reset();
- while (last_val >= 0) {
- expression.next();
- last_val--;
- }
- return bg_pos.get();
- }
-
-
- public CssBackgroundValue check(ApplContext ac, CssExpression expression,
- boolean check, boolean is_final)
- throws InvalidParamException {
- // <bg-layer> = <bg-image> || <bg-position> || / <bg-size> || <repeat-style> ||
- // <attachment> || <bg-origin>
- // bg_image is CSS_URL | IDENT
- // bg-position is IDENT | NUMBER | LENGTH | PERCENTAGE
- // bg-size is IDENT | NUMBER | LENGTH | PERCENTAGE
- // repeat-style is IDENT
- // attachment is IDENT
- // bg-origin is IDENT
- // + color as CSS_COLOR or IDENT on final-layer
-
- CssValue val;
- char op;
- CssExpression exp;
- CssBackgroundValue v = new CssBackgroundValue();
- boolean next_is_size, got_size;
- Object res;
-
- next_is_size = false;
- got_size = false;
- while (!expression.end()) {
- val = expression.getValue();
- op = expression.getOperator();
-
- switch (val.getType()) {
- case CssTypes.CSS_COLOR:
- // we already got one, fail...
- if (v.color != null || next_is_size || !is_final) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- exp = new CssExpression();
- exp.addValue(val);
-
- CssBackgroundColor bg_color;
- bg_color = new CssBackgroundColor(ac, exp, check);
- v.color = (CssValue) bg_color.get();
- break;
-
- case CssTypes.CSS_URL:
- // we already got one, fail...
- if (v.bg_image != null || next_is_size) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- exp = new CssExpression();
- exp.addValue(val);
-
- CssBackgroundImage bg_image;
- bg_image = new CssBackgroundImage(ac, exp, check);
- res = bg_image.get();
- // we only have one vale so it should always be the case
- if (res instanceof CssValue) {
- v.bg_image = (CssValue) res;
- } else {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- break;
- case CssTypes.CSS_NUMBER:
- case CssTypes.CSS_LENGTH:
- case CssTypes.CSS_PERCENTAGE:
- // ok, so now we have a background position or size.
- // and...
- // in <bg_layer>: where '<bg-position>' must occur before
- // '/ <bg-size>' if both are present.
- if (next_is_size) {
- // size, we have up to two values
- if (v.bg_size != null) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- res = getCssBackgroundSizeValue(ac, expression, check);
- op = expression.getOperator();
- // we only have one vale so it should always be the case
- if (res instanceof CssValue) {
- v.bg_size = (CssValue) res;
- } else {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- got_size = true;
- next_is_size = false;
- } else {
- // position with it's up to 4 values...
- if (got_size) {
- throw new InvalidParamException("bg_order", val,
- getPropertyName(), ac);
- }
- if (v.bg_position != null) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- res = getCssBackgroundPositionValue(ac, expression, check);
- op = expression.getOperator();
- // we only have one vale so it should always be the case
- if (res instanceof CssValue) {
- v.bg_position = (CssValue) res;
- } else {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
-
- }
- break;
- case CssTypes.CSS_IDENT:
- // inherit is already taken care of...
- CssIdent ident_val = (CssIdent) val;
- if (CssBackgroundAttachment.isMatchingIdent(ident_val)) {
- if (v.attachment != null || next_is_size) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- exp = new CssExpression();
- exp.addValue(val);
-
- CssBackgroundAttachment attachment;
- attachment = new CssBackgroundAttachment(ac, exp, check);
- res = attachment.get();
- // we only have one vale so it should always be the case
- if (res instanceof CssValue) {
- v.attachment = (CssValue) res;
- } else {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- break;
- }
- if (CssBackgroundImage.isMatchingIdent(ident_val)) {
- if (v.bg_image != null || next_is_size) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- // a bit of an overkill, as we know it can be only
- // 'none'.. but it is more flexible if ever it changes
- exp = new CssExpression();
- exp.addValue(val);
-
- bg_image = new CssBackgroundImage(ac, exp, check);
- res = bg_image.get();
- // we only have one vale so it should always be the case
- if (res instanceof CssValue) {
- v.bg_image = (CssValue) res;
- } else {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- break;
- }
- if (CssBackgroundOrigin.isMatchingIdent(ident_val)) {
- if (v.origin != null || next_is_size) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- exp = new CssExpression();
- exp.addValue(val);
-
- CssBackgroundOrigin origin;
- origin = new CssBackgroundOrigin(ac, exp, check);
- res = origin.get();
- // we only have one vale so it should always be the case
- if (res instanceof CssValue) {
- v.origin = (CssValue) res;
- } else {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- break;
- }
- if (CssBackgroundRepeat.isMatchingIdent(ident_val)) {
- if (v.repeat_style != null || next_is_size) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- res = getCssBackgroundRepeatValue(ac, expression, check);
- op = expression.getOperator();
-
- // we only have one vale so it should always be the case
- if (res instanceof CssValue) {
- v.repeat_style = (CssValue) res;
- } else {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- break;
- }
- if (next_is_size) {
- if (CssBackgroundSize.isMatchingIdent(ident_val)) {
- // size, we have up to two values
- if (v.bg_size != null) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- res = getCssBackgroundSizeValue(ac, expression, check);
- op = expression.getOperator();
- // we only have one vale so it should always be the case
- if (res instanceof CssValue) {
- v.bg_size = (CssValue) res;
- } else {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- got_size = true;
- next_is_size = false;
- break;
- }
- } else {
- if (CssBackgroundPosition.isMatchingIdent(ident_val)) {
- // position with it's up to 4 values...
- if (got_size) {
- throw new InvalidParamException("bg_order",
- val, getPropertyName(), ac);
- }
- if (v.bg_position != null) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- res = getCssBackgroundPositionValue(ac, expression, check);
- op = expression.getOperator();
- // we only have one vale so it should always be the case
- if (res instanceof CssValue) {
- v.bg_position = (CssValue) res;
- } else {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- break;
- }
- }
- // last one remaining... color!
- // or else, it will fail :)
- if (is_final) {
- if (v.color != null || next_is_size) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- exp = new CssExpression();
- exp.addValue(val);
- bg_color = new CssBackgroundColor(ac, exp, check);
- v.color = (CssValue) bg_color.get();
- break;
- }
- // unrecognized or unwanted ident
- // let it fail now
- default:
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
-
- if (op == SLASH) {
- next_is_size = true;
- } else if (op != SPACE) {
- throw new InvalidParamException("operator", val,
- getPropertyName(), ac);
- }
- expression.next();
- }
- align_bg_values(v);
- return v;
- }
-
- private void align_bg_values(CssBackgroundValue v) {
- // <bg-layer> = <bg-image> || <bg-position> || / <bg-size> || <repeat-style> ||
- // <attachment> || <bg-origin>
- Object value;
- if (v.bg_image == null) {
- value = (new CssBackgroundImage()).get();
- if (value instanceof CssValue) {
- v.bg_image_value = (CssValue) value;
- }
- } else {
- v.bg_image_value = v.bg_image;
- }
-
- if (v.bg_position == null) {
- value = (new CssBackgroundPosition()).get();
- if (value instanceof CssValue) {
- v.bg_position_value = (CssValue) value;
- }
- } else {
- v.bg_position_value = v.bg_position;
- }
-
- if (v.bg_size == null) {
- value = (new CssBackgroundSize()).get();
- if (value instanceof CssValue) {
- v.bg_size_value = (CssValue) value;
- }
- } else {
- v.bg_size_value = v.bg_size;
- }
-
- if (v.repeat_style == null) {
- value = (new CssBackgroundRepeat()).get();
- if (value instanceof CssValue) {
- v.repeat_style_value = (CssValue) value;
- }
- } else {
- v.repeat_style_value = v.repeat_style;
- }
-
- if (v.attachment == null) {
- value = (new CssBackgroundAttachment()).get();
- if (value instanceof CssValue) {
- v.attachment_value = (CssValue) value;
- }
- } else {
- v.attachment_value = v.attachment;
- }
-
- if (v.origin == null) {
- value = (new CssBackgroundOrigin()).get();
- if (value instanceof CssValue) {
- CssValue css_val = (CssValue) value;
- v.origin_value = (CssValue) value;
- // If 'background-origin' is present and its value matches a
- // possible value for 'background-clip' then it also sets
- // 'background-clip' to that value.
- if ((css_val.getType() == CssTypes.CSS_IDENT) &&
- CssBackgroundClip.isMatchingIdent((CssIdent) css_val)) {
- v.clip_value = v.origin_value;
- }
- }
- } else {
- v.origin_value = v.origin;
- }
-
- if (v.color == null) {
- v.color_value = (new CssBackgroundColor()).getColor();
- } else {
- v.color_value = v.color;
- }
- }
-
- /**
- * Transform the compound value into the equivalent individual
- * values (used for conflict check, like color and background-color
- * Note that the value verification already took place, so no need
- * for extra check
- */
- private void transform_into_individual_values() {
- if (value instanceof CssBackgroundValue) {
- CssBackgroundValue v = (CssBackgroundValue) value;
- if (v.color != null) {
- color = new CssBackgroundColor();
- color.set(v.color_value);
- }
- if (v.bg_image != null) {
- image = new CssBackgroundImage();
- image.set(v.bg_image_value);
- }
- if (v.repeat_style != null) {
- repeat = new CssBackgroundRepeat();
- repeat.set(v.repeat_style_value);
- }
- if (v.attachment != null) {
- attachment = new CssBackgroundAttachment();
- attachment.set(v.attachment_value);
- }
- if (v.bg_position != null) {
- position = new CssBackgroundPosition();
- position.set(v.bg_position_value);
- }
- if (v.bg_size != null) {
- size = new CssBackgroundSize();
- size.set(v.bg_size_value);
- }
- } else if (value instanceof ArrayList) {
- ArrayList vlist = (ArrayList) value;
- int len = vlist.size();
- ArrayList<CssValue> images = new ArrayList<CssValue>(len);
- ArrayList<CssValue> repeats = new ArrayList<CssValue>(len);
- ArrayList<CssValue> positions = new ArrayList<CssValue>(len);
- ArrayList<CssValue> attachments = new ArrayList<CssValue>(len);
- ArrayList<CssValue> sizes = new ArrayList<CssValue>(len);
-
- for (int i = 0; i < len; i++) {
- CssBackgroundValue v = (CssBackgroundValue) vlist.get(i);
- images.add(v.bg_image_value);
- repeats.add(v.repeat_style_value);
- positions.add(v.bg_position_value);
- attachments.add(v.attachment_value);
- sizes.add(v.bg_size_value);
- if (v.color != null) {
- color = new CssBackgroundColor();
- color.set(v.color_value);
- }
- }
- image = new CssBackgroundImage();
- image.set(images);
-
- repeat = new CssBackgroundRepeat();
- repeat.set(repeats);
-
- attachment = new CssBackgroundAttachment();
- attachment.set(attachments);
-
- position = new CssBackgroundPosition();
- position.set(sizes);
-
- size = new CssBackgroundSize();
- size.set(sizes);
- } else {
- // FIXME TODO use inherit?
- image = null;
- repeat = null;
- attachment = null;
- color = null;
- size = null;
- position = null;
- }
}
- /**
- * @return Returns the image.
- */
- public CssBackgroundImage getImage() {
- return image;
- }
/**
* Returns the value of this property
*/
public Object get() {
- return color;
+ return null;
}
/**
@@ -715,80 +86,17 @@
* Returns the name of this property
*/
public final String getPropertyName() {
- return propertyName;
+ return "background";
}
/**
* Returns a string representation of the object.
*/
public String toString() {
- if (value instanceof ArrayList) {
- ArrayList v_list;
- v_list = (ArrayList) value;
- StringBuilder sb = new StringBuilder();
- for (Object val : v_list) {
- sb.append(val.toString()).append(", ");
- }
- sb.setLength(sb.length() - 2);
- return sb.toString();
- }
return value.toString();
}
- /**
- * Set this property to be important.
- * Overrides this method for a macro
- */
- public void setImportant() {
- super.setImportant();
- if (color != null) {
- color.important = true;
- }
- if (image != null) {
- image.important = true;
- }
- if (repeat != null) {
- repeat.important = true;
- }
- if (attachment != null) {
- attachment.important = true;
- }
- if (position != null) {
- position.important = true;
- }
- if (size != null) {
- size.important = true;
- }
- }
- /**
- * Set the context.
- * Overrides this method for a macro
- *
- * @see org.w3c.css.css.CssCascadingOrder#order
- * @see org.w3c.css.css.StyleSheetParser#handleRule
- */
- public void setSelectors(CssSelectors selector) {
- super.setSelectors(selector);
- if (color != null) {
- color.setSelectors(selector);
- }
- if (image != null) {
- image.setSelectors(selector);
- }
- if (repeat != null) {
- repeat.setSelectors(selector);
- }
- if (attachment != null) {
- attachment.setSelectors(selector);
- }
- if (position != null) {
- position.setSelectors(selector);
- }
- if (size != null) {
- size.setSelectors(selector);
- }
- }
/**
* Add this property to the CssStyle
@@ -798,25 +106,6 @@
public void addToStyle(ApplContext ac, CssStyle style) {
((Css1Style) style).cssBackground.same = same;
((Css1Style) style).cssBackground.byUser = byUser;
-
- if (color != null) {
- color.addToStyle(ac, style);
- }
- if (image != null) {
- image.addToStyle(ac, style);
- }
- if (repeat != null) {
- repeat.addToStyle(ac, style);
- }
- if (attachment != null) {
- attachment.addToStyle(ac, style);
- }
- if (position != null) {
- position.addToStyle(ac, style);
- }
- if (size != null) {
- size.addToStyle(ac, style);
- }
}
/**
@@ -841,150 +130,4 @@
public boolean equals(CssProperty property) {
return false; // FIXME
}
-
- /**
- * Update the source file and the line.
- * Overrides this method for a macro
- *
- * @param line The line number where this property is defined
- * @param source The source file where this property is defined
- */
- public void setInfo(int line, String source) {
- super.setInfo(line, source);
- if (color != null) {
- color.setInfo(line, source);
- }
- if (image != null) {
- image.setInfo(line, source);
- }
- if (repeat != null) {
- repeat.setInfo(line, source);
- }
- if (attachment != null) {
- attachment.setInfo(line, source);
- }
- if (position != null) {
- position.setInfo(line, source);
- }
- if (size != null) {
- size.setInfo(line, source);
- }
- }
-
-// placeholder for the different values
-
- public class CssBackgroundValue extends CssValueList {
-
- CssValue bg_image = null;
- CssValue bg_position = null;
- CssValue bg_size = null;
- CssValue repeat_style = null;
- CssValue attachment = null;
- CssValue origin = null;
- CssValue color = null;
-
- CssValue bg_image_value = null;
- CssValue bg_position_value = null;
- CssValue bg_size_value = null;
- CssValue repeat_style_value = null;
- CssValue attachment_value = null;
- CssValue origin_value = null;
- // If 'background-origin' is present and its value matches a possible
- // value for 'background-clip' then it also sets 'background-clip' to
- // that value.
- CssValue clip_value = null;
- CssValue color_value = null;
-
- public boolean equals(CssBackgroundValue v) {
- if (bg_image_value == null) {
- if (v.bg_image_value != null) {
- return false;
- }
- } else if (!bg_image_value.equals(v.bg_image_value)) {
- return false;
- }
- if (bg_position_value == null) {
- if (v.bg_position_value != null) {
- return false;
- }
- } else if (!bg_position_value.equals(v.bg_position_value)) {
- return false;
- }
- if (bg_size_value == null) {
- if (v.bg_size_value != null) {
- return false;
- }
- } else if (!bg_size_value.equals(v.bg_size_value)) {
- return false;
- }
- if (repeat_style_value == null) {
- if (v.repeat_style_value != null) {
- return false;
- }
- } else if (!repeat_style_value.equals(v.repeat_style_value)) {
- return false;
- }
- if (attachment_value == null) {
- if (v.attachment_value != null) {
- return false;
- }
- } else if (!attachment_value.equals(v.attachment_value)) {
- return false;
- }
- if (origin_value == null) {
- if (v.origin_value != null) {
- return false;
- }
- } else if (!origin_value.equals(v.origin_value)) {
- return false;
- }
- if (clip_value == null) {
- if (v.clip_value != null) {
- return false;
- }
- } else if (!clip_value.equals(v.clip_value)) {
- return false;
- }
- if (color_value == null) {
- if (v.color_value != null) {
- return false;
- }
- } else if (!color_value.equals(v.color_value)) {
- return false;
- }
- // at last!
- return true;
- }
-
- public String toString() {
- StringBuilder sb = new StringBuilder();
- if (bg_image != null) {
- sb.append(bg_image).append(' ');
- }
- if (bg_position != null) {
- sb.append(bg_position).append(' ');
- }
- if (bg_size != null) {
- sb.append('/').append(bg_size).append(' ');
- }
- if (repeat_style != null) {
- sb.append(repeat_style).append(' ');
- }
- if (attachment != null) {
- sb.append(attachment).append(' ');
- }
- if (origin != null) {
- sb.append(origin).append(' ');
- }
- if (color != null) {
- sb.append(color);
- } else {
- int sb_length = sb.length();
- if (sb_length > 0) {
- sb.setLength(sb_length - 1);
- }
- }
- return sb.toString();
- }
- }
}
Index: CssBackgroundPosition.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css/CssBackgroundPosition.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- CssBackgroundPosition.java 22 Jan 2010 10:51:17 -0000 1.7
+++ CssBackgroundPosition.java 4 Oct 2011 13:05:24 -0000 1.8
@@ -13,18 +13,10 @@
import org.w3c.css.util.InvalidParamException;
import org.w3c.css.values.CssExpression;
import org.w3c.css.values.CssIdent;
-import org.w3c.css.values.CssNumber;
import org.w3c.css.values.CssPercentage;
-import org.w3c.css.values.CssTypes;
import org.w3c.css.values.CssValue;
import org.w3c.css.values.CssValueList;
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import static org.w3c.css.values.CssOperator.COMMA;
-import static org.w3c.css.values.CssOperator.SPACE;
-
/**
* http://www.w3.org/TR/2009/CR-css3-background-20091217/#background-position
* <p/>
@@ -58,9 +50,6 @@
*/
public class CssBackgroundPosition extends CssProperty {
- private static final String propertyName = "background-position";
-
- private static HashMap<String, CssIdent> allowed_values;
private static final CssIdent center, top, bottom, left, right;
private static final CssPercentage defaultPercent0, defaultPercent50;
private static final CssPercentage defaultPercent100;
@@ -71,22 +60,12 @@
left = CssIdent.getIdent("left");
right = CssIdent.getIdent("right");
center = CssIdent.getIdent("center");
- allowed_values = new HashMap<String, CssIdent>();
- allowed_values.put("top", top);
- allowed_values.put("bottom", bottom);
- allowed_values.put("left", left);
- allowed_values.put("right", right);
- allowed_values.put("center", center);
defaultPercent0 = new CssPercentage(0);
defaultPercent50 = new CssPercentage(50);
defaultPercent100 = new CssPercentage(100);
}
- public static boolean isMatchingIdent(CssIdent ident) {
- return allowed_values.containsKey(ident.toString());
- }
-
Object value;
/**
@@ -104,56 +83,7 @@
*/
public CssBackgroundPosition(ApplContext ac, CssExpression expression,
boolean check) throws InvalidParamException {
- setByUser();
- CssValue val;
- ArrayList<CssBackgroundPositionValue> values;
- CssBackgroundPositionValue b_val = null;
- char op;
-
- values = new ArrayList<CssBackgroundPositionValue>();
- // 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;
- }
- if (b_val == null) {
- b_val = new CssBackgroundPositionValue();
- }
- // we will check later
- b_val.add(val);
- expression.next();
-
- if (!expression.end()) {
- // incomplete value followed by a comma... it's complete!
- if (op == COMMA) {
- check(b_val, ac);
- values.add(b_val);
- b_val = null;
- } else 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
- if (b_val != null) {
- check(b_val, ac);
- values.add(b_val);
- }
- if (values.size() == 1) {
- value = values.get(0);
- } else {
- value = values;
- }
+ throw new InvalidParamException("unrecognize", ac);
}
public CssBackgroundPosition(ApplContext ac, CssExpression expression)
@@ -177,7 +107,7 @@
* Returns the name of this property
*/
public final String getPropertyName() {
- return propertyName;
+ return "background-position";
}
/**
@@ -192,16 +122,6 @@
* Returns a string representation of the object.
*/
public String toString() {
- if (value instanceof ArrayList) {
- ArrayList v_list;
- v_list = (ArrayList) value;
- StringBuilder sb = new StringBuilder();
- for (Object val : v_list) {
- sb.append(val.toString()).append(", ");
- }
- sb.setLength(sb.length() - 2);
- return sb.toString();
- }
return value.toString();
}
@@ -247,234 +167,7 @@
* It is used by all macro for the function <code>print</code>
*/
public boolean isDefault() {
- if (!(value instanceof CssBackgroundPositionValue)) {
- return false;
- }
- CssBackgroundPositionValue v = (CssBackgroundPositionValue) value;
- return ((v.val_vertical == defaultPercent0) &&
- (v.val_horizontal == defaultPercent0) &&
- (v.vertical_offset == null) &&
- (v.horizontal_offset == null));
- }
-
- public void check(CssBackgroundPositionValue v, ApplContext ac)
- throws InvalidParamException {
- int nb_keyword = 0;
- int nb_percentage = 0;
- int nb_length = 0;
- int nb_values = v.value.size();
-
- if (nb_values > 4) {
- throw new InvalidParamException("unrecognize", ac);
- }
- // basic check
- for (CssValue aValue : v.value) {
- switch (aValue.getType()) {
- case CssTypes.CSS_NUMBER:
- aValue = ((CssNumber) aValue).getLength();
- case CssTypes.CSS_LENGTH:
- nb_length++;
- break;
- case CssTypes.CSS_PERCENTAGE:
- nb_percentage++;
- break;
- case CssTypes.CSS_IDENT:
- nb_keyword++;
- break;
- default:
- throw new InvalidParamException("unrecognize", aValue,
- ac);
- }
- }
- if ((nb_keyword > 2) || (nb_length > 2) || (nb_percentage > 2)) {
- throw new InvalidParamException("unrecognize", ac);
- }
- // this is unnecessary complex, blame it on the CSS3 spec.
- switch (nb_keyword) {
- case 0:
- // no keyword, so it's easy, it depends on the number
- // of values :)
- switch (nb_values) {
- case 1:
- // If only one value is specified, the second value
- // is assumed to be 'center'.
- v.horizontal = v.value.get(0);
- if (v.horizontal.getType() == CssTypes.CSS_NUMBER) {
- v.horizontal = defaultPercent0;
- }
- v.val_horizontal = v.horizontal;
- v.val_vertical = defaultPercent50;
- break;
- case 2:
- v.horizontal = v.value.get(0);
- if (v.horizontal.getType() == CssTypes.CSS_NUMBER) {
- v.horizontal = defaultPercent0;
- }
- v.val_horizontal = v.horizontal;
- v.vertical = v.value.get(1);
- if (v.vertical.getType() == CssTypes.CSS_NUMBER) {
- v.vertical = defaultPercent0;
- }
- v.val_vertical = v.vertical;
- break;
- default:
- // If three or four values are given, then each
- // <percentage> or<length> represents an offset and
- // must be preceded by a keyword
- throw new InvalidParamException("unrecognize",
- ac);
-
- }
- break;
- // we got one keyword... let's have fun...
- case 1:
- switch (nb_values) {
- case 1:
- CssIdent ident = (CssIdent) v.value.get(0);
- // ugly as we need to set values for equality tests
- v.val_vertical = defaultPercent50;
- v.val_horizontal = defaultPercent50;
- ident = allowed_values.get(ident.toString());
- if (ident != null) {
- if (isVertical(ident)) {
- v.vertical = ident;
- v.val_vertical = identToPercent(ident);
- } else {
- // horizontal || center
- v.horizontal = ident;
- v.val_horizontal = identToPercent(ident);
- }
- break;
- }
- throw new InvalidParamException("unrecognize",
- ident, propertyName, ac);
- case 2:
- // one ident, two values... first MUST be horizontal
- // and second vertical
- CssValue val0 = v.value.get(0);
- if (val0.getType() == CssTypes.CSS_IDENT) {
-
- ident = allowed_values.get(val0.toString());
- if (ident == null) {
- throw new InvalidParamException("unrecognize",
- ident, propertyName, ac);
- }
- if (isVertical(ident)) {
- throw new InvalidParamException("incompatible",
- ident, v.value.get(1), ac);
- }
- v.horizontal = ident;
- v.val_horizontal = identToPercent(ident);
- // and the vertical value...
- v.vertical = v.value.get(1);
- if (v.vertical.getType() == CssTypes.CSS_NUMBER) {
- v.vertical = defaultPercent0;
- }
- v.val_vertical = v.vertical;
- } else {
- ident = allowed_values.get(v.value.get(1).toString());
- if (ident == null) {
- throw new InvalidParamException("unrecognize",
- ident, propertyName, ac);
- }
- if (isHorizontal(ident)) {
- throw new InvalidParamException("incompatible",
- val0, v.value.get(1), ac);
- }
- v.vertical = ident;
- v.val_vertical = identToPercent(ident);
- // and the first value
- v.horizontal = val0;
- if (v.horizontal.getType() == CssTypes.CSS_NUMBER) {
- v.horizontal = defaultPercent0;
- }
- v.val_horizontal = v.horizontal;
- }
- break;
- default:
- // one ident, 3 or 4 values is not allowed
- throw new InvalidParamException("unrecognize",
- ac);
- }
- break;
- default:
- // ok so we have two keywords, with possible offsets
- // we must check that every possible offset is right
- // after a keyword and also that the two keywords are
- // not incompatible
- boolean got_ident = false;
- CssIdent id1 = null;
- CssIdent id2 = null;
- CssValue off1 = null;
- CssValue off2 = null;
- for (CssValue aValue : v.value) {
- switch (aValue.getType()) {
- case CssTypes.CSS_IDENT:
- aValue = allowed_values.get(aValue.toString());
- if (aValue == null) {
- throw new InvalidParamException("unrecognize",
- aValue, propertyName, ac);
- }
- got_ident = true;
- if (id1 == null) {
- id1 = (CssIdent) aValue;
- } else {
- id2 = (CssIdent) aValue;
- // we got both, let's check.
- if (((isVertical(id1) && isVertical(id2))) ||
- (isHorizontal(id1) && isHorizontal(id2))) {
- throw new InvalidParamException("incompatible",
- id1, id2, ac);
- }
- }
- break;
- case CssTypes.CSS_NUMBER:
- aValue = ((CssNumber) aValue).getPercentage();
- case CssTypes.CSS_PERCENTAGE:
- case CssTypes.CSS_LENGTH:
- if (!got_ident) {
- throw new InvalidParamException("unrecognize",
- aValue, propertyName, ac);
- }
- if (id2 == null) {
- off1 = aValue;
- } else {
- off2 = aValue;
- }
- got_ident = false;
- break;
- default:
- // should never happen
- }
- }
-
- if (isVertical(id1) || isHorizontal(id2)) {
- // if an offset is present and value is 'center'
- if (((off1 != null) && !isVertical(id1)) ||
- ((off2 != null) && !isHorizontal(id2))) {
- throw new InvalidParamException("incompatible",
- id1, id2, ac);
- }
- v.horizontal = id2;
- v.val_horizontal = identToPercent(id2);
- v.horizontal_offset = off2;
- v.vertical = id1;
- v.val_vertical = identToPercent(id1);
- v.vertical_offset = off1;
- } else {
- if (((off2 != null) && !isVertical(id2)) ||
- ((off1 != null) && !isHorizontal(id1))) {
- throw new InvalidParamException("incompatible",
- id1, id2, ac);
- }
- v.horizontal = id1;
- v.val_horizontal = identToPercent(id1);
- v.horizontal_offset = off1;
- v.vertical = id2;
- v.val_vertical = identToPercent(id2);
- v.vertical_offset = off2;
- }
- }
+ return false;
}
public static CssPercentage identToPercent(CssIdent ident) {
@@ -530,28 +223,12 @@
} else if (v.horizontal_offset != null) {
return false;
}
- // yeah!
+ // yeah!
return true;
}
public String toString() {
- StringBuilder sb = new StringBuilder();
- if (horizontal != null) {
- sb.append(horizontal);
- if (horizontal_offset != null) {
- sb.append(' ').append(horizontal_offset);
- }
- if (vertical != null) {
- sb.append(' ');
- }
- }
- if (vertical != null) {
- sb.append(vertical);
- if (vertical_offset != null) {
- sb.append(' ').append(vertical_offset);
- }
- }
- return sb.toString();
+ return value.toString();
}
}
Index: CssColumnRule.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css/CssColumnRule.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- CssColumnRule.java 9 Sep 2011 15:02:39 -0000 1.2
+++ CssColumnRule.java 4 Oct 2011 13:05:24 -0000 1.3
@@ -123,6 +123,7 @@
} catch (Exception ex) {
}
}
+
default:
throw new InvalidParamException("value",
expression.getValue(),
Index: CssBackgroundColor.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css/CssBackgroundColor.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- CssBackgroundColor.java 22 Jan 2010 10:51:16 -0000 1.3
+++ CssBackgroundColor.java 4 Oct 2011 13:05:24 -0000 1.4
@@ -9,7 +9,6 @@
import org.w3c.css.parser.CssStyle;
import org.w3c.css.properties.css1.Css1Style;
-import org.w3c.css.properties.css1.CssColor;
import org.w3c.css.util.ApplContext;
import org.w3c.css.util.InvalidParamException;
import org.w3c.css.values.CssExpression;
@@ -34,13 +33,10 @@
CssValue color;
- private static final String propertyName = "background-color";
-
/**
* Create a new CssBackgroundColor
*/
public CssBackgroundColor() {
- color = transparent;
}
/**
@@ -51,29 +47,7 @@
*/
public CssBackgroundColor(ApplContext ac, CssExpression expression,
boolean check) throws InvalidParamException {
-
- setByUser();
- CssValue val = expression.getValue();
-
- if (check && expression.getCount() > 1) {
throw new InvalidParamException("unrecognize", ac);
- }
-
- if (inherit.equals(val)) {
- color = inherit;
- expression.next();
- } else {
- try {
- // we use the latest version of CssColor, aka CSS3
- // instead of using CSS21 colors + transparent per spec.
- CssColor tcolor = new CssColor(ac, expression, check);
- color = tcolor.getColor();
- } catch (InvalidParamException e) {
- throw new InvalidParamException("value",
- expression.getValue(),
- getPropertyName(), ac);
- }
- }
}
public CssBackgroundColor(ApplContext ac, CssExpression expression)
@@ -155,7 +129,7 @@
* Returns the name of this property
*/
public final String getPropertyName() {
- return propertyName;
+ return "background-color";
}
/**
@@ -163,7 +137,7 @@
* It is used by all macro for the function <code>print</code>
*/
public boolean isDefault() {
- return (color == transparent);
+ return false;
}
}
--- NEW FILE: CssColor.java ---
//
// $Id: CssColor.java,v 1.1 2011/10/04 13:05:24 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.css;
import org.w3c.css.parser.CssStyle;
import org.w3c.css.properties.css1.Css1Style;
import org.w3c.css.util.ApplContext;
import org.w3c.css.util.InvalidParamException;
import org.w3c.css.values.CssExpression;
import org.w3c.css.values.CssValue;
/**
* @version $Revision: 1.1 $
*/
public class CssColor extends CssProperty {
CssValue color;
String attrvalue = null;
/**
* Create a new CssColor
*/
public CssColor() {
}
/**
* Set the value of the property
*
* @param expression The expression for this property
* @throws org.w3c.css.util.InvalidParamException
* Values are incorrect
*/
public CssColor(ApplContext ac, CssExpression expression, boolean check)
throws InvalidParamException {
throw new InvalidParamException("unrecognize", ac);
}
public CssColor(ApplContext ac, CssExpression expression)
throws InvalidParamException {
this(ac, expression, false);
}
/**
* Returns the value of this property
*/
public Object get() {
return color;
}
/**
* Returns the color
*/
public org.w3c.css.values.CssColor getColor() {
return null;
}
/**
* Returns true if this property is "softly" inherited
* e.g. his value equals inherit
*/
public boolean isSoftlyInherited() {
return color.equals(inherit);
}
/**
* Returns a string representation of the object.
*/
public String toString() {
if (attrvalue != null) {
return attrvalue;
} else {
return color.toString();
}
}
/**
* Add this property to the CssStyle.
*
* @param style The CssStyle
*/
public void addToStyle(ApplContext ac, CssStyle style) {
Css1Style style0 = (Css1Style) style;
if (style0.cssColor != null) {
style0.addRedefinitionWarning(ac, this);
}
style0.cssColor = this;
}
/**
* 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).getColor();
} else {
return ((Css1Style) style).cssColor;
}
}
/**
* Compares two properties for equality.
*
* @param property The other property.
*/
public boolean equals(CssProperty property) {
return false;
}
/**
* Returns the name of this property
*/
public final String getPropertyName() {
return "color";
}
}
Index: CssBackgroundImage.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css/CssBackgroundImage.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- CssBackgroundImage.java 22 Jan 2010 10:51:16 -0000 1.3
+++ CssBackgroundImage.java 4 Oct 2011 13:05:24 -0000 1.4
@@ -11,47 +11,16 @@
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 java.util.ArrayList;
-
-import static org.w3c.css.values.CssOperator.COMMA;
/**
- * http://www.w3.org/TR/2009/CR-css3-background-20091217/#the-background-image
- * <p/>
- * Name: background-image
- * Value: <bg-image> [ , <bg-image> ]*
- * Initial: none
- * Applies to: all elements
- * Inherited: no
- * Percentages: N/A
- * Media: visual
- * Computed value: as specified, but with URIs made absolute
- * <p/>
- * This property sets the background image(s) of an element. Images are drawn
- * with the first specified one on top (closest to the user) and each
- * subsequent image behind the previous one. Where
- * <p/>
- * <bg-image> = <image> | none
*/
public class CssBackgroundImage extends CssProperty {
-
- private static final String propertyName = "background-image";
-
Object url = null;
- public static boolean isMatchingIdent(CssIdent ident) {
- return none.equals(ident);
- }
-
/**
* Create a new CssBackgroundImage
*/
public CssBackgroundImage() {
- url = none;
}
/**
@@ -65,48 +34,8 @@
public CssBackgroundImage(ApplContext ac, CssExpression expression,
boolean check) throws InvalidParamException {
- ArrayList<CssValue> values = new ArrayList<CssValue>();
- setByUser();
-
- CssValue val;
- char op;
+ throw new InvalidParamException("unrecognize", ac);
- while (!expression.end()) {
- val = expression.getValue();
- op = expression.getOperator();
- switch (val.getType()) {
- case CssTypes.CSS_URL:
- values.add(val);
- break;
- case CssTypes.CSS_IDENT:
- if (inherit.equals(val)) {
- // if we got inherit after other values, fail
- // if we got more than one value... fail
- if ((values.size() > 0) || (expression.getCount() > 1)) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- values.add(inherit);
- break;
- } else if (none.equals(val)) {
- values.add(none);
- break;
- }
- default:
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- expression.next();
- if (!expression.end() && (op != COMMA)) {
- throw new InvalidParamException("operator",
- ((new Character(op)).toString()), ac);
- }
- }
- if (values.size() == 1) {
- url = values.get(0);
- } else {
- url = values;
- }
}
public CssBackgroundImage(ApplContext ac, CssExpression expression)
@@ -138,15 +67,6 @@
* Returns a string representation of the object.
*/
public String toString() {
- if (url instanceof ArrayList) {
- ArrayList values = (ArrayList) url;
- StringBuilder sb = new StringBuilder();
- for (Object aValue : values) {
- sb.append(aValue.toString()).append(", ");
- }
- sb.setLength(sb.length() - 2);
- return sb.toString();
- }
return url.toString();
}
@@ -154,7 +74,7 @@
* Returns the name of this property
*/
public final String getPropertyName() {
- return propertyName;
+ return "background-image";
}
/**
@@ -198,7 +118,7 @@
* It is used by all macro for the function <code>print</code>
*/
public boolean isDefault() {
- return (url == none);
+ return false;
}
}
Index: CssBackgroundSize.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css/CssBackgroundSize.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- CssBackgroundSize.java 22 Jan 2010 10:51:17 -0000 1.4
+++ CssBackgroundSize.java 4 Oct 2011 13:05:24 -0000 1.5
@@ -11,17 +11,6 @@
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.CssNumber;
-import org.w3c.css.values.CssTypes;
-import org.w3c.css.values.CssValue;
-import org.w3c.css.values.CssValueList;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import static org.w3c.css.values.CssOperator.COMMA;
-import static org.w3c.css.values.CssOperator.SPACE;
/**
* http://www.w3.org/TR/2009/CR-css3-background-20091217/#the-background-size
@@ -46,20 +35,6 @@
private static final String propertyName = "background-size";
- private static CssIdent auto;
- private static HashMap<String, CssIdent> allowed_values;
-
- static {
- auto = CssIdent.getIdent("auto");
- allowed_values = new HashMap<String, CssIdent>();
- allowed_values.put("auto", auto);
- allowed_values.put("cover", CssIdent.getIdent("cover"));
- allowed_values.put("contain", CssIdent.getIdent("contain"));
- }
-
- public static boolean isMatchingIdent(CssIdent ident) {
- return allowed_values.containsKey(ident.toString());
- }
Object value;
@@ -67,7 +42,6 @@
* Create a new CssBackgroundSize
*/
public CssBackgroundSize() {
- value = auto;
}
/**
@@ -80,95 +54,7 @@
*/
public CssBackgroundSize(ApplContext ac, CssExpression expression,
boolean check) throws InvalidParamException {
- ArrayList<CssValue> values = new ArrayList<CssValue>();
- char op;
- CssValue val;
- CssValueList vl = null;
- boolean is_complete = true;
-
- setByUser();
-
- while (!expression.end()) {
- val = expression.getValue();
- op = expression.getOperator();
- switch (val.getType()) {
- case CssTypes.CSS_NUMBER:
- val = ((CssNumber) val).getLength();
- case CssTypes.CSS_LENGTH:
- case CssTypes.CSS_PERCENTAGE:
- // per spec only non-negative values are allowed
- float f = ((Float) val.get()).floatValue();
- if (f < 0) {
- throw new InvalidParamException("negative-value",
- val.toString(), ac);
- }
- if (is_complete) {
- vl = new CssValueList();
- vl.add(val);
- } else {
- vl.add(val);
- values.add(vl);
- }
- is_complete = !is_complete;
- break;
- case CssTypes.CSS_IDENT:
- if (inherit.equals(val)) {
- // if we got inherit after other values, fail
- // if we got more than one value... fail
- if ((values.size() > 0) || (expression.getCount() > 1)) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- values.add(inherit);
- break;
- } else if (auto.equals(val)) {
- if (is_complete) {
- vl = new CssValueList();
- vl.add(auto);
- } else {
- vl.add(auto);
- values.add(vl);
- }
- is_complete = !is_complete;
- break;
- } else {
- CssValue v = allowed_values.get(val.toString());
- // if ok, and if we are not in a middle of a compound
- // value...
- if (v != null && is_complete) {
- values.add(v);
- break;
- }
- }
- default:
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
-
- }
- expression.next();
- if (!expression.end()) {
- // incomplete value followed by a comma... it's complete!
- if (!is_complete && (op == COMMA)) {
- values.add(vl);
- is_complete = true;
- }
- // complete values are separated by a comma, otherwise space
- if ((is_complete && (op != COMMA)) ||
- (!is_complete && (op != SPACE))) {
- throw new InvalidParamException("operator",
- ((new Character(op)).toString()), ac);
- }
- }
- }
- // if we reach the end in a value that can come in pair
- if (!is_complete) {
- values.add(vl);
- }
- if (values.size() == 1) {
- value = values.get(0);
- } else {
- value = values;
- }
+ throw new InvalidParamException("unrecognize", ac);
}
@@ -216,7 +102,7 @@
* Returns the name of this property
*/
public final String getPropertyName() {
- return propertyName;
+ return "background-size";
}
/**
@@ -240,15 +126,6 @@
* Returns a string representation of the object
*/
public String toString() {
- if (value instanceof ArrayList) {
- ArrayList values = (ArrayList) value;
- StringBuilder sb = new StringBuilder();
- for (Object aValue : values) {
- sb.append(aValue.toString()).append(", ");
- }
- sb.setLength(sb.length() - 2);
- return sb.toString();
- }
return value.toString();
}
@@ -257,7 +134,7 @@
* It is used by all macro for the function <code>print</code>
*/
public boolean isDefault() {
- return (auto == value);
+ return false;
}
}
Index: CssBackgroundOrigin.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css/CssBackgroundOrigin.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- CssBackgroundOrigin.java 22 Jan 2010 10:51:16 -0000 1.5
+++ CssBackgroundOrigin.java 4 Oct 2011 13:05:24 -0000 1.6
@@ -13,13 +13,6 @@
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 java.util.ArrayList;
-
-import static org.w3c.css.values.CssOperator.COMMA;
/**
* http://www.w3.org/TR/2009/CR-css3-background-20091217/#the-background-origin
@@ -43,30 +36,13 @@
public class CssBackgroundOrigin extends CssProperty {
- private static final String propertyName = "background-origin";
- private static CssIdent border_box;
- private static CssIdent padding_box;
- private static CssIdent content_box;
-
Object value;
- static {
- border_box = CssIdent.getIdent("border-box");
- padding_box = CssIdent.getIdent("padding-box");
- content_box = CssIdent.getIdent("content-box");
- }
-
- public static boolean isMatchingIdent(CssIdent ident) {
- return (border_box.equals(ident) ||
- padding_box.equals(ident) ||
- content_box.equals(ident));
- }
/**
* Create a new CssBackgroundClip
*/
public CssBackgroundOrigin() {
- value = padding_box;
}
/**
@@ -78,51 +54,7 @@
*/
public CssBackgroundOrigin(ApplContext ac, CssExpression expression,
boolean check) throws InvalidParamException {
-
- ArrayList<CssValue> values = new ArrayList<CssValue>();
-
- CssValue val = expression.getValue();
- char op;
-
- while (!expression.end()) {
- val = expression.getValue();
- op = expression.getOperator();
- switch (val.getType()) {
- case CssTypes.CSS_IDENT:
- if (inherit.equals(val)) {
- // if we got inherit after other values, fail
- // if we got more than one value... fail
- if ((values.size() > 0) || (expression.getCount() > 1)) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- values.add(inherit);
- break;
- } else if (border_box.equals(val)) {
- values.add(border_box);
- break;
- } else if (content_box.equals(val)) {
- values.add(content_box);
- break;
- } else if (padding_box.equals(val)) {
- values.add(padding_box);
- break;
- }
- default:
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- expression.next();
- if (!expression.end() && (op != COMMA)) {
- throw new InvalidParamException("operator",
- ((new Character(op)).toString()), ac);
- }
- }
- if (values.size() == 1) {
- value = values.get(0);
- } else {
- value = values;
- }
+ throw new InvalidParamException("unrecognize", ac);
}
public CssBackgroundOrigin(ApplContext ac, CssExpression expression)
@@ -170,7 +102,7 @@
* Returns the name of this property
*/
public final String getPropertyName() {
- return propertyName;
+ return "background-origin";
}
/**
@@ -195,15 +127,7 @@
* Returns a string representation of the object
*/
public String toString() {
- if (value instanceof ArrayList) {
- ArrayList values = (ArrayList) value;
- StringBuilder sb = new StringBuilder();
- for (Object aValue : values) {
- sb.append(aValue.toString()).append(", ");
- }
- sb.setLength(sb.length() - 2);
- return sb.toString();
- }
+
return value.toString();
}
@@ -212,7 +136,7 @@
* It is used by all macro for the function <code>print</code>
*/
public boolean isDefault() {
- return (padding_box == value);
+ return false;
}
}
\ No newline at end of file
Index: CssBackgroundClip.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css/CssBackgroundClip.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- CssBackgroundClip.java 22 Jan 2010 10:51:16 -0000 1.3
+++ CssBackgroundClip.java 4 Oct 2011 13:05:23 -0000 1.4
@@ -12,51 +12,20 @@
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 java.util.ArrayList;
-
-import static org.w3c.css.values.CssOperator.COMMA;
/**
- * http://www.w3.org/TR/2009/CR-css3-background-20091217/#the-background-clip
- * Name: background-clip
- * Value: [border-box | padding-box ] [ , [border-box | padding-box ] ]*
- * Initial: border-box
- * Applies to: all elements
- * Inherited: no
- * Percentages: N/A
- * Media: visual
- * Computed value: same as specified value
- * <p/>
- * Determines the background painting area.
*/
public class CssBackgroundClip extends CssProperty {
- private static final String propertyName = "background-clip";
- public final static CssIdent border_box;
- public final static CssIdent padding_box;
Object value;
- static {
- border_box = CssIdent.getIdent("border-box");
- padding_box = CssIdent.getIdent("padding-box");
- }
-
- public static boolean isMatchingIdent(CssIdent ident) {
- return (border_box.equals(ident) ||
- padding_box.equals(ident));
- }
/**
* Create a new CssBackgroundClip
*/
public CssBackgroundClip() {
- value = border_box;
}
/**
@@ -67,48 +36,8 @@
*/
public CssBackgroundClip(ApplContext ac, CssExpression expression,
boolean check) throws InvalidParamException {
+ throw new InvalidParamException("unrecognized", ac);
- ArrayList<CssValue> values = new ArrayList<CssValue>();
-
- CssValue val;
- char op;
-
- while (!expression.end()) {
- val = expression.getValue();
- op = expression.getOperator();
- switch (val.getType()) {
- case CssTypes.CSS_IDENT:
- if (inherit.equals(val)) {
- // if we got inherit after other values, fail
- // if we got more than one value... fail
- if ((values.size() > 0) || (expression.getCount() > 1)) {
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- values.add(inherit);
- break;
- } else if (border_box.equals(val)) {
- values.add(border_box);
- break;
- } else if (padding_box.equals(val)) {
- values.add(padding_box);
- break;
- }
- default:
- throw new InvalidParamException("value", val,
- getPropertyName(), ac);
- }
- expression.next();
- if (!expression.end() && (op != COMMA)) {
- throw new InvalidParamException("operator",
- ((new Character(op)).toString()), ac);
- }
- }
- if (values.size() == 1) {
- value = values.get(0);
- } else {
- value = values;
- }
}
public CssBackgroundClip(ApplContext ac, CssExpression expression)
@@ -116,9 +45,6 @@
this(ac, expression, false);
}
- public void set(Object val) {
- value = val;
- }
/**
* Add this property to the CssStyle
@@ -160,7 +86,7 @@
* Returns the name of this property
*/
public final String getPropertyName() {
- return propertyName;
+ return "background-clip";
}
/**
@@ -181,15 +107,6 @@
* Returns a string representation of the object
*/
public String toString() {
- if (value instanceof ArrayList) {
- ArrayList values = (ArrayList) value;
- StringBuilder sb = new StringBuilder();
- for (Object aValue : values) {
- sb.append(aValue.toString()).append(", ");
- }
- sb.setLength(sb.length() - 2);
- return sb.toString();
- }
return value.toString();
}
@@ -198,7 +115,7 @@
* It is used by all macro for the function <code>print</code>
*/
public boolean isDefault() {
- return (border_box == value);
+ return false;
}
}
Received on Tuesday, 4 October 2011 13:05:37 UTC