- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Fri, 28 Sep 2012 11:31:01 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/properties/css1 In directory hutz:/tmp/cvs-serv18302/css1 Modified Files: Css1Style.java CssFloat.java Log Message: float per css1->css3 Index: CssFloat.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css1/CssFloat.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- CssFloat.java 5 Jan 2010 13:49:43 -0000 1.4 +++ CssFloat.java 28 Sep 2012 11:30:59 -0000 1.5 @@ -1,252 +1,95 @@ -// // $Id$ -// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr) +// Author: Yves Lafon <ylafon@w3.org> // -// (c) COPYRIGHT MIT and INRIA, 1997. +// (c) COPYRIGHT MIT, ERCIM and Keio University, 2012. // Please first read the full copyright statement in file COPYRIGHT.html package org.w3c.css.properties.css1; -import org.w3c.css.parser.CssStyle; -import org.w3c.css.properties.css.CssProperty; 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; /** - * <H4> - * 'float' - * </H4> - * <P> - * <EM>Value:</EM> left | right | none<BR> - * <EM>Initial:</EM> none<BR> - * <EM>Applies to:</EM> all elements<BR> - * <EM>Inherited:</EM> no<BR> - * <EM>Percentage values:</EM> N/A<BR> - - * <P> With the value 'none', the element will be displayed where it appears - * in the text. With a value of 'left' ('right') the element will be moved to - * the left ('right') and the text will wrap on the right (left) side of the - * element. With a value of 'left' or 'right', the element is treated as - * block-level (i.e. the 'display' property is ignored). - * - * <H3> - * Floating elements - * </H3> - - * <P> Using the <A HREF="#float">'float'</A> property, an element can be - * declared to be outside the normal flow of elements and is then formatted as - * a block-level element. For example, by setting the 'float' property of an - * image to 'left', the image is moved to the left until the margin, padding - * or border of another block-level element is reached. The normal flow will - * wrap around on the right side. The margins, borders and padding of the - * element itself will be honored, and the margins never collapse with the - * margins of adjacent elements. - - * <P> A floating element is positioned subject to the following constraints: - - * <OL> - - * <LI> The left outer edge of a left-floating element may not be to the - * left of the left inner edge of its parent element. Analogously for right - * floating elements. - - * <LI> The left outer edge of a left floating element must be to the right - * of the right outer edge of every earlier (in the HTML source) - * left-floating element or the top of the former must be lower than the - * bottom of the latter. Analogously for right floating elements. - - * <LI> The right outer edge of a left-floating element may not be to the - * right of the left outer edge of any right-floating element that is to the - * right of it. Analogously for right-floating elements. - - * <LI> A floating element's top may not be higher than the inner top of its - * parent. - - * <LI> A floating element's top may not be higher than the top of any - * earlier floating or block-level element. - - * <LI> A floating element's top may not be higher than the top of any - * <EM>line-box</EM> (see section 4.4) with content that precedes the - * floating element in the HTML source. - - * <LI> A floating element must be placed as high as possible. - - * <LI> A left-floating element must be put as far to the left as possible, - * a right-floating element as far to the right as possible. A higher - * position is preferred over one that is further to the left/right. - - * </OL> - * <PRE> - * <STYLE TYPE="text/css"> - * IMG { float: left } - * BODY, P, IMG { margin: 2em } - * </STYLE> - - * <BODY> - * <P> - * <IMG SRC=img.gif> - * Some sample text that has no other... - * </BODY> - * </PRE> - * <P> - * The above example could be formatted as: - * <PRE> - * ________________________________________ - * | - * | max(BODY margin, P margin) - * | ______________________________ - * | | | Some sample text - * | B | P | IMG margins that has no other - * | O | | _____ purpose than to - * | D | m | | | show how floating - * | Y | a | | IMG | elements are moved - * | | r | | | to the side of the - * | m | g | |_____| parent element - * | a | i | while honoring - * | r | n | margins, borders - * | g | | and padding. Note - * | i | |how adjacent vertical margins - * | n | |are collapsed between non- - * | | |floating block-level elements. - * </PRE> - * <P> Note that the margin of the 'P' elements enclose the floating 'IMG' - * element. - * <P> There are two situations when floating elements can overlap with the - * margin, border and padding areas of other elements: - * <UL> - * <LI> when the floating element has a negative margin: negative margins on - * floating elements are honored as on other block-level elements. - * <LI> when the floating element is wider or higher than the element it is - * inside - * </UL> - * - * @version $Revision$ + * @spec http://www.w3.org/TR/2008/REC-CSS1-20080411/#float */ -public class CssFloat extends CssProperty { - - int value; - - private static String[] FLOAT = { "none", "left", "right", "inherit" }; - private static int[] hash_values; - - /** - * Create a new CssFloat - */ - public CssFloat() { - // nothing to do - } +public class CssFloat extends org.w3c.css.properties.css.CssFloat { - /** - * Create a new CssFloat - * - * @param expression The expression for this property - * @exception InvalidParamException Values are incorrect - */ - public CssFloat(ApplContext ac, CssExpression expression, boolean check) - throws InvalidParamException { + public static final CssIdent[] allowed_values; - if(check && expression.getCount() > 1) { - throw new InvalidParamException("unrecognize", ac); + static { + String[] _allowed_values = {"left", "right", "none"}; + int i = 0; + allowed_values = new CssIdent[_allowed_values.length]; + for (String s : _allowed_values) { + allowed_values[i++] = CssIdent.getIdent(s); + } } - CssValue val = expression.getValue(); - setByUser(); - if ( val instanceof CssIdent) { - int hash = val.hashCode(); - for (int i = 0; i < FLOAT.length; i++) - if (hash_values[i] == hash) { - value = i; - expression.next(); - return; + public static final CssIdent getAllowedIdent(CssIdent ident) { + for (CssIdent id : allowed_values) { + if (id.equals(ident)) { + return id; + } } + return null; } - throw new InvalidParamException("value", expression.getValue(), - getPropertyName(), ac); - } - public CssFloat(ApplContext ac, CssExpression expression) - throws InvalidParamException { - this(ac, expression, false); - } + /** + * Create a new CssFloat + */ + public CssFloat() { + } - /** - * Returns the value of this property - */ - public Object get() { - return FLOAT[value]; - } - /** - * Returns the name of this property - */ - public String getPropertyName() { - return "float"; - } + /** + * Set the value of the property<br/> + * Does not check the number of values + * + * @param expression The expression for this property + * @throws org.w3c.css.util.InvalidParamException + * The expression is incorrect + */ + public CssFloat(ApplContext ac, CssExpression expression) + throws InvalidParamException { + this(ac, expression, false); + } - /** - * Returns true if this property is "softly" inherited - * e.g. his value equals inherit - */ - public boolean isSoftlyInherited() { - return value == FLOAT.length - 1; - } + /** + * Set the value of the property + * + * @param expression The expression for this property + * @param check set it to true to check the number of values + * @throws org.w3c.css.util.InvalidParamException + * The expression is incorrect + */ + public CssFloat(ApplContext ac, CssExpression expression, + boolean check) throws InvalidParamException { + if (check && expression.getCount() > 1) { + throw new InvalidParamException("unrecognize", ac); + } + setByUser(); - /** - * Returns a string representation of the object. - */ - public String toString() { - return FLOAT[value]; - } + CssValue val; + char op; - /** - * Add this property to the CssStyle. - * - * @param style The CssStyle - */ - public void addToStyle(ApplContext ac, CssStyle style) { - Css1Style style0 = (Css1Style) style; - if (style0.cssFloat != null) - style0.addRedefinitionWarning(ac, this); - style0.cssFloat = this; - } + val = expression.getValue(); + op = expression.getOperator(); - /** - * 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).getFloat(); - } else { - return ((Css1Style) style).cssFloat; + if (val.getType() == CssTypes.CSS_IDENT) { + value = getAllowedIdent((CssIdent) val); + if (value == null) { + throw new InvalidParamException("value", + val.toString(), + getPropertyName(), ac); + } + } else { + throw new InvalidParamException("value", + val.toString(), + getPropertyName(), ac); + } + expression.next(); } - } - - /** - * Compares two properties for equality. - * - * @param value The other property. - */ - public boolean equals(CssProperty property) { - return (property instanceof CssFloat && - value == ((CssFloat) 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 value == 0; - } - - static { - hash_values = new int[FLOAT.length]; - for (int i = 0; i < FLOAT.length; i++) - hash_values[i] = FLOAT[i].hashCode(); - } } Index: Css1Style.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css1/Css1Style.java,v retrieving revision 1.40 retrieving revision 1.41 diff -u -d -r1.40 -r1.41 --- Css1Style.java 28 Sep 2012 09:51:34 -0000 1.40 +++ Css1Style.java 28 Sep 2012 11:30:59 -0000 1.41 @@ -28,6 +28,7 @@ import org.w3c.css.properties.css.CssMarginLeft; import org.w3c.css.properties.css.CssMarginRight; import org.w3c.css.properties.css.CssClear; +import org.w3c.css.properties.css.CssFloat; import org.w3c.css.util.ApplContext; import org.w3c.css.util.InvalidParamException;
Received on Friday, 28 September 2012 11:31:12 UTC