2002/css-validator/org/w3c/css/properties/paged Css2Style.java,NONE,1.1 Makefile,NONE,1.1 Marks.java,NONE,1.1 Orphans.java,NONE,1.1 OrphansATSC.java,NONE,1.1 Page.java,NONE,1.1 PageATSC.java,NONE,1.1 PageBreakAfter.java,NONE,1.1 PageBreakAfterATSC.java,NONE,1.1 PageBreakBefore.java,NONE,1.1 PageBreakBeforeATSC.java,NONE,1.1 PageBreakInside.java,NONE,1.1 PageBreakInsideATSC.java,NONE,1.1 PagedDefault.properties,NONE,1.1 PagedProperties.java,NONE,1.1 PagedProperty.java,NONE,1.1 Size.java,NONE,1.1 Widows.java,NONE,1.1 WidowsATSC.java,NONE,1.1

Update of /sources/public/2002/css-validator/org/w3c/css/properties/paged
In directory hutz:/tmp/cvs-serv7360/properties/paged

Added Files:
	Css2Style.java Makefile Marks.java Orphans.java 
	OrphansATSC.java Page.java PageATSC.java PageBreakAfter.java 
	PageBreakAfterATSC.java PageBreakBefore.java 
	PageBreakBeforeATSC.java PageBreakInside.java 
	PageBreakInsideATSC.java PagedDefault.properties 
	PagedProperties.java PagedProperty.java Size.java Widows.java 
	WidowsATSC.java 
Log Message:
Patch by Jean-Guilhem Rouel

Better handling of media and properties files
Major reorganization of those properties files



--- NEW FILE: Css2Style.java ---
//
// $Id: Css2Style.java,v 1.1 2005/08/23 16:25:02 ylafon Exp $
// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
//
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
/*
 */
package org.w3c.css.properties.paged;

import org.w3c.css.parser.CssPrinterStyle;


/**
 * @version $Revision: 1.1 $
 */
public class Css2Style extends org.w3c.css.properties.css2.user.Css2Style {

    Size size;
    Marks marks;

    PageBreakBefore pageBreakBefore;
    PageBreakBeforeATSC pageBreakBeforeATSC;
    PageBreakAfter pageBreakAfter;
    PageBreakAfterATSC pageBreakAfterATSC;
    PageBreakInside pageBreakInside;
    PageBreakInsideATSC pageBreakInsideATSC;

    Page page;
    PageATSC pageATSC;
    Orphans orphans;
    OrphansATSC orphansATSC;
    Widows widows;
    WidowsATSC widowsATSC;

    /**
     * Get the size property
     */
    public final Size getSize() {
	if (size == null) {
	    size = (Size) style.CascadingOrder(new Size(), 
						   style, selector);
	}
	return size;
    }
    
    /**
     * Get the marks property
     */
    public final Marks getMarks() {
	if (marks == null) {
	    marks = (Marks) style.CascadingOrder(new Marks(), 
						   style, selector);
	}
	return marks;
    }
    
    /**
     * Get the page-break-before property
     */
    public final PageBreakBefore getPageBreakBefore() {
	if (pageBreakBefore == null) {
	    pageBreakBefore = 
		(PageBreakBefore) style.CascadingOrder(new PageBreakBefore(), 
						       style, selector);
	}
	return pageBreakBefore;
    }
    
    public final PageBreakBeforeATSC getPageBreakBeforeATSC() {
	if (pageBreakBeforeATSC == null) {
	    pageBreakBeforeATSC = 
		(PageBreakBeforeATSC) style.CascadingOrder(new PageBreakBeforeATSC(), 
						       style, selector);
	}
	return pageBreakBeforeATSC;
    }

    /**
     * Get the page-break-after property
     */
    public final PageBreakAfter getPageBreakAfter() {
	if (pageBreakAfter == null) {
	    pageBreakAfter = 
		(PageBreakAfter) style.CascadingOrder(new PageBreakAfter(), 
						       style, selector);
	}
	return pageBreakAfter;
    }

    public final PageBreakAfterATSC getPageBreakAfterATSC() {
	if (pageBreakAfterATSC == null) {
	    pageBreakAfterATSC = 
		(PageBreakAfterATSC) style.CascadingOrder(new PageBreakAfterATSC(), 
						       style, selector);
	}
	return pageBreakAfterATSC;
    }
    
    /**
     * Get the page-break-inside property
     */
    public final PageBreakInside getPageBreakInside() {
	if (pageBreakInside == null) {
	    pageBreakInside = 
		(PageBreakInside) style.CascadingOrder(new PageBreakInside(), 
						       style, selector);
	}
	return pageBreakInside;
    }

    public final PageBreakInsideATSC getPageBreakInsideATSC() {
	if (pageBreakInsideATSC == null) {
	    pageBreakInsideATSC = 
		(PageBreakInsideATSC) style.CascadingOrder(new PageBreakInsideATSC(), 
						       style, selector);
	}
	return pageBreakInsideATSC;
    }

        
    /**
     * Get the page property
     */
    public final Page getPage() {
	if (page == null) {
	    page = 
		(Page) style.CascadingOrder(new Page(), 
						       style, selector);
	}
	return page;
    }
    
    public final PageATSC getPageATSC() {
	if (pageATSC == null) {
	    pageATSC = 
		(PageATSC) style.CascadingOrder(new PageATSC(), 
						       style, selector);
	}
	return pageATSC;
    }

    /**
     * Get the orphans property
     */
    public final Orphans getOrphans() {
	if (orphans == null) {
	    orphans = 
		(Orphans) style.CascadingOrder(new Orphans(), 
						       style, selector);
	}
	return orphans;
    }

    public final OrphansATSC getOrphansATSC() {
	if (orphansATSC == null) {
	    orphansATSC = 
		(OrphansATSC) style.CascadingOrder(new OrphansATSC(), 
						       style, selector);
	}
	return orphansATSC;
    }

    /**
     * Get the widows property
     */
    public final Widows getWidows() {
	if (widows == null) {
	    widows = 
		(Widows) style.CascadingOrder(new Widows(), 
						       style, selector);
	}
	return widows;
    }

    public final WidowsATSC getWidowsATSC() {
	if (widowsATSC == null) {
	    widowsATSC = 
		(WidowsATSC) style.CascadingOrder(new WidowsATSC(), 
						       style, selector);
	}
	return widowsATSC;
    }

    /**
     * Print this style.
     *
     * @param printer The printer interface.
     */  
    public void print(CssPrinterStyle printer) {
	super.print(printer);

	if (size != null) {
	    size.print(printer);
	}
	if (marks != null) {
	    marks.print(printer);
	}
 	if (pageBreakBefore != null) {
	    pageBreakBefore.print(printer);
	}
	if (pageBreakBeforeATSC != null) {
	    pageBreakBeforeATSC.print(printer);
	}

 	if (pageBreakAfter != null) {
	    pageBreakAfter.print(printer);
	}
	if (pageBreakAfterATSC != null) {
	    pageBreakAfterATSC.print(printer);
	}
 	if (pageBreakInside != null) {
	    pageBreakInside.print(printer);
	}
	if (pageBreakInsideATSC != null) {
	    pageBreakInsideATSC.print(printer);
	}
  	if (page != null) {
	    page.print(printer);
	}
	if (pageATSC != null) {
	    pageATSC.print(printer);
	}
  	if (orphans != null) {
	    orphans.print(printer);
	}
	if (orphansATSC != null) {
	    orphansATSC.print(printer);
	}
  	if (widows != null) {
	    widows.print(printer);
	}
	if (widowsATSC != null) {
	    widowsATSC.print(printer);
	}
    }
	
}

--- NEW FILE: WidowsATSC.java ---
//
// $Id: WidowsATSC.java,v 1.1 2005/08/23 16:25:02 ylafon Exp $
// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
//
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
/*
 */

package org.w3c.css.properties.paged;

import org.w3c.css.parser.CssStyle;
import org.w3c.css.properties.css1.CssProperty;
import org.w3c.css.util.ApplContext;
import org.w3c.css.util.InvalidParamException;
import org.w3c.css.values.CssExpression;
import org.w3c.css.values.CssNumber;
import org.w3c.css.values.CssValue;


/**
 */
public class WidowsATSC extends PagedProperty {
    
    CssValue value;
    
    /**
     * Create a new WidowsATSC
     */  
    public WidowsATSC() {
	value = new CssNumber(null, 2);
    }
    
    /**
     * Creates a new CssWidowsATSC
     *
     * @param expression the expression of the size
     * @exception InvalidParamException The expression is incorrect
     */  
    public WidowsATSC(ApplContext ac, CssExpression expression,
	    boolean check) throws InvalidParamException {
	
	if(check && expression.getCount() > 1) {
	    throw new InvalidParamException("unrecognize", ac);
	}
	
	CssValue val = expression.getValue();
	setByUser();

	ac.getFrame().addWarning("atsc", val.toString());

	if (val.equals(inherit)) {
	    value = inherit;
	    expression.next();
	    return;
	} else if (val instanceof CssNumber) {
	    if (((CssNumber) val).isInteger()) {
		value = val;
		expression.next();
		return;
	    } else {
		throw new InvalidParamException("integer", 
						val.toString(), 
						getPropertyName(), ac);
	    }
	} 
	
	throw new InvalidParamException("value", 
					    val.toString(), 
					    getPropertyName(), ac);
    }
    
    public WidowsATSC(ApplContext ac, CssExpression expression) 
    	throws InvalidParamException {
	this(ac, expression, false);
    }
    
    /**
     * Returns the current value
     */  
    public Object get() {
	return value;
    }
    
    /**
     * Returns true if this property is "softly" inherited
     * e.g. his value equals inherit
     */
    public boolean isSoftlyInherited() {
	return value == inherit;
    }
    
    /**
     * Returns a string representation of the object.
     */
    public String toString() {
	return value.toString();
    }
    
    
    /**
     * Returns the name of this property
     */  
    public String getPropertyName() {
	return "widows";
    }
    
    /**
     * Add this property to the CssStyle.
     *
     * @param style The CssStyle
     */
    public void addToStyle(ApplContext ac, CssStyle style) {
	Css2Style style0 = (Css2Style) style;
	if (style0.widowsATSC != null) {
	    style.addRedefinitionWarning(ac, this);
	}
	style0.widowsATSC = 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 ((Css2Style) style).getWidowsATSC();
	} else {
	    return ((Css2Style) style).widowsATSC;
	}
    }
    
    /**
     * Compares two properties for equality.
     *
     * @param value The other property.
     */  
    public boolean equals(CssProperty property) {
	if (value == null) {
	    return (property instanceof WidowsATSC && 
		    ((WidowsATSC) property).value == value);
	} else {
	    return (property instanceof WidowsATSC && 
		    ((WidowsATSC) property).value.equals(value));
	}
    }
    
}

--- NEW FILE: Marks.java ---
//
// $Id: Marks.java,v 1.1 2005/08/23 16:25:02 ylafon Exp $
// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
//
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
/*
 */
package org.w3c.css.properties.paged;
import org.w3c.css.parser.CssStyle;
import org.w3c.css.properties.css1.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.CssLength;
import org.w3c.css.values.CssNumber;
import org.w3c.css.values.CssOperator;
import org.w3c.css.values.CssValue;

/**
 * @version $Revision: 1.1 $
 */
public class Marks extends CssProperty 
        implements CssOperator {
    
    CssValue l1, l2;
    
    private static CssIdent none = new CssIdent("none");
    private static CssIdent crop = new CssIdent("crop");
    private static CssIdent cross = new CssIdent("cross");

    /**
     * Create a new CssMarks
     */
    public Marks() {
	l1 = none;
    }
    
    /**
     * Create a new CssMarks
     *
     * @param expression The expression for this property
     * @exception InvalidParamException Values are incorrect
     */  
    public Marks(ApplContext ac, CssExpression expression, boolean check) 
	    throws InvalidParamException {
	
	if(check && expression.getCount() > 2) {
	    throw new InvalidParamException("unrecognize", ac);
	}
	
	CssValue val = expression.getValue();
	char op = expression.getOperator();
	
	setByUser();
	
	if (val.equals(inherit)) {
	    if(expression.getCount() > 1) {
		throw new InvalidParamException("unrecognize", ac);
	    }
	    l1 = inherit;
	    expression.next();
	    return;
	} else if (val.equals(none)) {
	    if(expression.getCount() > 1) {
		throw new InvalidParamException("unrecognize", ac);
	    }
	    l1 = none;
	    expression.next();
	    return;
	} else if (val.equals(crop)) {
	    l1 = crop;
	    expression.next();
	    if (!expression.end()) {
		val = expression.getValue();
		if ((op == SPACE) && (val.equals(cross))) {
		    l2 = cross;
		    expression.next();
		    return;
		} else {
		    throw new InvalidParamException("value", 
						    val.toString(), 
						    getPropertyName(), ac);
		}
	    }
	    return;
	} else if (val.equals(cross)) {
	    l1 = cross;
	    expression.next();
	    if (!expression.end()) {
		val = expression.getValue();
		if ((op == SPACE) && (val.equals(crop))) {
		    l2 = crop;
		    expression.next();
		    return;
		} else {
		    throw new InvalidParamException("value", 
						    val.toString(), 
						    getPropertyName(), ac);
		}
	    }
	    return;
	}

	throw new InvalidParamException("value", 
					val.toString(), getPropertyName(), ac);
    }
    
    public Marks(ApplContext ac, CssExpression expression) 
	throws InvalidParamException {
	this(ac, expression, false);
    }
    
    /**
     * Returns the value of this property
     */
    public Object get() {
	return null;
    }
    
    /**
     * Returns the name of this property
     */
    public String getPropertyName() {
	return "marks";
    }
    
    /**
     * Returns true if this property is "softly" inherited
     * e.g. his value equals inherit
     */
    public boolean isSoftlyInherited() {
	return l1 == inherit;
    }
    
    /**
     * Returns a string representation of the object.
     */
    public String toString() {
	if (l2 != null) {
	    return l1.toString() + " " + l2.toString();
	} else {
	    return l1.toString();
	}
    }
    
    /**
     * Add this property to the CssStyle.
     *
     * @param style The CssStyle
     */
    public void addToStyle(ApplContext ac, CssStyle style) {
	Css2Style style0 = (Css2Style) style;
	if (style0.marks != null)
	    style0.addRedefinitionWarning(ac, this);
	style0.marks = 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 ((Css2Style) style).getMarks();
	} else {
	    return ((Css2Style) style).marks;
	}
    }
    
    /**
     * Compares two properties for equality.
     *
     * @param value The other property.
     */  
    public boolean equals(CssProperty property) {
	return (property instanceof Marks 
		&& l1.equals(((Marks) property).l1)
		    || l2.equals(((Marks) property).l2));
    }
    
    /**
     * 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 l1 == none;
    }
    
    CssLength getLength(CssValue val) throws InvalidParamException {
        if (val instanceof CssLength) {
            return (CssLength) val;
        } else if (val instanceof CssNumber) {
            return ((CssNumber) val).getLength();
        } else {
            return null;
        }
    }

}

--- NEW FILE: PageBreakBefore.java ---
//
// $Id: PageBreakBefore.java,v 1.1 2005/08/23 16:25:02 ylafon Exp $
// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
//
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
/*
 */
package org.w3c.css.properties.paged;
import org.w3c.css.parser.CssStyle;
import org.w3c.css.properties.css1.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.CssOperator;
import org.w3c.css.values.CssValue;

/**
 * @version $Revision: 1.1 $
 */
public class PageBreakBefore extends CssProperty 
    implements CssOperator {
    
    int value;
    
    private static String PAGEBREAKBEFORE[] = {
	"auto", "always", "avoid", "left", "right", "inherit" };
    
    private static int[] hash_values;
    
    
    /**
     * Create a new CssPageBreakBefore
     */
    public PageBreakBefore() {
	value = 0;
    }
    
    /**
     * Create a new CssPageBreakBefore
     *
     * @param expression The expression for this property
     * @exception InvalidParamException Values are incorrect
     */  
    public PageBreakBefore(ApplContext ac, CssExpression expression,
	    boolean check) throws InvalidParamException {
	
	if(check && expression.getCount() > 1) {
	    throw new InvalidParamException("unrecognize", ac);
	}
	
	CssValue val = expression.getValue();
//	char op = expression.getOperator();
	
	setByUser();
		
	if (val instanceof CssIdent) {
	    int hash = val.hashCode();
	    
	    for (int i = 0; i < PAGEBREAKBEFORE.length; i++) {
		if (hash_values[i] == hash) {
		    value = i;
		    expression.next();
		    return;
		}
	    }
	}
	
	throw new InvalidParamException("value", 
					val.toString(), getPropertyName(), ac);
    }
    
    public PageBreakBefore(ApplContext ac, CssExpression expression) 
	throws InvalidParamException {
	this(ac, expression, false);
    }
    
    /**
     * Returns the value of this property
     */
    public Object get() {
	return null;
    }
    
    /**
     * Returns the name of this property
     */  
    public String getPropertyName() {
	return "page-break-before";
    }
    
    /**
     * Returns true if this property is "softly" inherited
     * e.g. his value equals inherit
     */
    public boolean isSoftlyInherited() {
	return value == PAGEBREAKBEFORE.length - 1;
    }
    
    /**
     * Returns a string representation of the object.
     */
    public String toString() {
	return PAGEBREAKBEFORE[value];
    }
    
    /**
     * Add this property to the CssStyle.
     *
     * @param style The CssStyle
     */
    public void addToStyle(ApplContext ac, CssStyle style) {
	Css2Style style0 = (Css2Style) style;
	if (style0.pageBreakBefore != null)
	    style0.addRedefinitionWarning(ac, this);
	style0.pageBreakBefore = 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 ((Css2Style) style).getPageBreakBefore();
	} else {
	    return ((Css2Style) style).pageBreakBefore;
	}
    }
    
    /**
     * Compares two properties for equality.
     *
     * @param value The other property.
     */  
    public boolean equals(CssProperty property) {
	return (property instanceof PageBreakBefore 
		&& value == ((PageBreakBefore) 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[PAGEBREAKBEFORE.length];
	for (int i=0; i<PAGEBREAKBEFORE.length; i++)
	    hash_values[i] = PAGEBREAKBEFORE[i].hashCode();
    }
}

--- NEW FILE: Size.java ---
//
// $Id: Size.java,v 1.1 2005/08/23 16:25:02 ylafon Exp $
// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
//
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
/*
 */
package org.w3c.css.properties.paged;
import org.w3c.css.parser.CssStyle;
import org.w3c.css.properties.css1.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.CssLength;
import org.w3c.css.values.CssNumber;
import org.w3c.css.values.CssOperator;
import org.w3c.css.values.CssValue;

/**
 * @version $Revision: 1.1 $
 */
public class Size extends CssProperty 
        implements CssOperator {
    
    CssValue l1, l2;
    
    private static CssIdent auto = new CssIdent("auto");
    private static CssIdent portrait = new CssIdent("portrait");
    private static CssIdent landscape = new CssIdent("landscape");

    /**
     * Create a new CssSize
     */
    public Size() {
	l1 = auto;
    }
    
    /**
     * Create a new CssSize
     *
     * @param expression The expression for this property
     * @exception InvalidParamException Values are incorrect
     */  
    public Size(ApplContext ac, CssExpression expression, boolean check) 
	    throws InvalidParamException {
	
	if(check && expression.getCount() > 2) {
	    throw new InvalidParamException("unrecognize", ac);
	}
	
	CssValue val = expression.getValue();
	char op = expression.getOperator();
	
	setByUser();
	
	if (val.equals(inherit)) {
	    if(expression.getCount() > 1) {
		throw new InvalidParamException("unrecognize", ac);
	    }
	    l1 = inherit;
	    expression.next();
	    return;
	} else if (val.equals(auto)) {
	    if(expression.getCount() > 1) {
		throw new InvalidParamException("unrecognize", ac);
	    }
	    l1 = auto;
	    expression.next();
	    return;
	} else if (val.equals(portrait)) {
	    if(expression.getCount() > 1) {
		throw new InvalidParamException("unrecognize", ac);
	    }
	    l1 = portrait;
	    expression.next();
	    return;
	} else if (val.equals(landscape)) {
	    if(expression.getCount() > 1) {
		throw new InvalidParamException("unrecognize", ac);
	    }
	    l1 = landscape;
	    expression.next();
	    return;
	}

	val = getLength(val);
	if (val != null) {
	    l1 = val;
	    expression.next();
	    if (!expression.end()) {
		if(expression.getValue().equals(inherit)) {
		    throw new InvalidParamException("unrecognize", ac);
		}
		val = getLength(expression.getValue());
		if ((val == null)
		    || (op != SPACE)) {
		    throw new InvalidParamException("value", 
						    val.toString(), 
						    getPropertyName(), ac);
		} else {
		    l2 = val;
		    expression.next();
		    return;
		}
	    } else {
		expression.next();
		return;
	    }
	} else {
	    throw new InvalidParamException("value", 
					    val.toString(), getPropertyName(), ac);
	}
    }
    
    public Size(ApplContext ac, CssExpression expression) 
    	throws InvalidParamException {
	this(ac, expression, false);
    }
    
    /**
     * Returns the value of this property
     */
    public Object get() {
	return null;
    }
    
    /**
     * Returns the name of this property
     */  
    public String getPropertyName() {
	return "size";
    }
    
    /**
     * Returns true if this property is "softly" inherited
     * e.g. his value equals inherit
     */
    public boolean isSoftlyInherited() {
	return l1 == inherit;
    }
    
    /**
     * Returns a string representation of the object.
     */
    public String toString() {
	if (l2 != null) {
	    return l1.toString() + " " + l2.toString();
	} else {
	    return l1.toString();
	}
    }
    
    /**
     * Add this property to the CssStyle.
     *
     * @param style The CssStyle
     */
    public void addToStyle(ApplContext ac, CssStyle style) {
	Css2Style style0 = (Css2Style) style;
	if (style0.size != null)
	    style0.addRedefinitionWarning(ac, this);
	style0.size = 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 ((Css2Style) style).getSize();
	} else {
	    return ((Css2Style) style).size;
	}
    }
    
    /**
     * Compares two properties for equality.
     *
     * @param value The other property.
     */  
    public boolean equals(CssProperty property) {
	return (property instanceof Size 
		&& l1.equals(((Size) property).l1)
		&& ((l2 == null)
		    || l2.equals(((Size) property).l2)));
    }
    
    /**
     * 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 l1 == auto;
    }
    
    CssLength getLength(CssValue val) throws InvalidParamException {
        if (val instanceof CssLength) {
            return (CssLength) val;
        } else if (val instanceof CssNumber) {
            return ((CssNumber) val).getLength();
        } else {
            return null;
        }
    }

}

--- NEW FILE: PageBreakAfter.java ---
//
// $Id: PageBreakAfter.java,v 1.1 2005/08/23 16:25:02 ylafon Exp $
// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
//
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
/*
 */
package org.w3c.css.properties.paged;
import org.w3c.css.parser.CssStyle;
import org.w3c.css.properties.css1.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.CssOperator;
import org.w3c.css.values.CssValue;

/**
 * @version $Revision: 1.1 $
 */
public class PageBreakAfter extends CssProperty 
    implements CssOperator {
    
    int value;
    
    private static String PAGEBREAKAFTER[] = {
	"auto", "always", "avoid", "left", "right", "inherit" };
    
    private static int[] hash_values;
    
    
    /**
     * Create a new CssPageBreakAfter
     */
    public PageBreakAfter() {
	value = 0;
    }
    
    /**
     * Create a new CssPageBreakAfter
     *
     * @param expression The expression for this property
     * @exception InvalidParamException Values are incorrect
     */  
    public PageBreakAfter(ApplContext ac, CssExpression expression,
	    boolean check) throws InvalidParamException {
	
	if(check && expression.getCount() > 1) {
	    throw new InvalidParamException("unrecognize", ac);
	}
	
	CssValue val = expression.getValue();
//	char op = expression.getOperator();
	
	setByUser();
		
	if (val instanceof CssIdent) {
	    int hash = val.hashCode();
	    
	    for (int i = 0; i < PAGEBREAKAFTER.length; i++) {
		if (hash_values[i] == hash) {
		    value = i;
		    expression.next();
		    return;
		}
	    }
	}
	
	throw new InvalidParamException("value", 
					val.toString(), getPropertyName(), ac);
    }
    
    public PageBreakAfter(ApplContext ac, CssExpression expression) 
	throws InvalidParamException {
	this(ac, expression, false);
    }
    
    /**
     * Returns the value of this property
     */
    public Object get() {
	return null;
    }
    
    /**
     * Returns the name of this property
     */  
    public String getPropertyName() {
	return "page-break-after";
    }
    
    /**
     * Returns true if this property is "softly" inherited
     * e.g. his value equals inherit
     */
    public boolean isSoftlyInherited() {
	return value == PAGEBREAKAFTER.length - 1;
    }
    
    /**
     * Returns a string representation of the object.
     */
    public String toString() {
	return PAGEBREAKAFTER[value];
    }
    
    /**
     * Add this property to the CssStyle.
     *
     * @param style The CssStyle
     */
    public void addToStyle(ApplContext ac, CssStyle style) {
	Css2Style style0 = (Css2Style) style;
	if (style0.pageBreakAfter != null)
	    style0.addRedefinitionWarning(ac, this);
	style0.pageBreakAfter = 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 ((Css2Style) style).getPageBreakAfter();
	} else {
	    return ((Css2Style) style).pageBreakAfter;
	}
    }
    
    /**
     * Compares two properties for equality.
     *
     * @param value The other property.
     */  
    public boolean equals(CssProperty property) {
	return (property instanceof PageBreakAfter 
		&& value == ((PageBreakAfter) 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[PAGEBREAKAFTER.length];
	for (int i=0; i<PAGEBREAKAFTER.length; i++)
	    hash_values[i] = PAGEBREAKAFTER[i].hashCode();
    }
}

--- NEW FILE: PagedDefault.properties ---
size.inherited:  false
marks.inherited:  false
page-break-before.inherited:  true
page-break-after.inherited:  true
page-break-inside.inherited:  true


--- NEW FILE: Page.java ---
//
// $Id: Page.java,v 1.1 2005/08/23 16:25:02 ylafon Exp $
// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
//
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
/*
 */
package org.w3c.css.properties.paged;
import org.w3c.css.parser.CssStyle;
import org.w3c.css.properties.css1.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.CssOperator;
import org.w3c.css.values.CssValue;

/**
 * @version $Revision: 1.1 $
 */
public class Page extends CssProperty 
    implements CssOperator {
    
    CssValue value;
    CssValue pseudo;

    private static CssIdent auto = new CssIdent("auto");
    
    
    /**
     * Create a new CssPage
     */
    public Page() {
	value = auto;
    }
    
    /**
     * Create a new CssPage
     *
     * @param expression The expression for this property
     * @exception InvalidParamException Values are incorrect
     */  
    public Page(ApplContext ac, CssExpression expression, boolean check) 
	throws InvalidParamException {
	
	if(check && expression.getCount() > 2) {
	    throw new InvalidParamException("unrecognize", ac);
	}
	
	CssValue val = expression.getValue();
	char op = expression.getOperator();
	
	setByUser();
		
	if (val.equals(auto)) {
	    if(expression.getCount() > 1) {
		throw new InvalidParamException("unrecognize", ac);
	    }
	    value = val;
	    expression.next();
	} else if (val instanceof CssIdent) {
	    value = val;
	    expression.next();
	    if (!expression.end()) {
		val = expression.getValue();
		if ((op == SPACE) && (val instanceof CssIdent)) {
		    pseudo = val;
		    expression.next();
		    return;
		} else {
		    throw new InvalidParamException("value", 
			    val.toString(), 
			    getPropertyName(), ac);
		}
	    }
	} else {
	    throw new InvalidParamException("value", 
		    val.toString(), getPropertyName(), ac);
	}
    }
    
    public Page(ApplContext ac, CssExpression expression) 
	throws InvalidParamException {
	this(ac, expression, false);
    }
    
    /**
     * Returns the value of this property
     */
    public Object get() {
	return null;
    }
    
    /**
     * Returns the name of this property
     */  
    public String getPropertyName() {
	return "page";
    }
    
    /**
     * Returns a string representation of the object.
     */
    public String toString() {
	if (pseudo != null) {
	    return value + " " + pseudo;
	} else {
	    return value.toString();
	}
    }
    
    /**
     * Add this property to the CssStyle.
     *
     * @param style The CssStyle
     */
    public void addToStyle(ApplContext ac, CssStyle style) {
	Css2Style style0 = (Css2Style) style;
	if (style0.page != null)
	    style0.addRedefinitionWarning(ac, this);
	style0.page = 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 ((Css2Style) style).getPage();
	} else {
	    return ((Css2Style) style).page;
	}
    }
    
    /**
     * Compares two properties for equality.
     *
     * @param value The other property.
     */  
    public boolean equals(CssProperty property) {
	return (property instanceof Page 
		&& value == ((Page) property).value
		&& ((pseudo == null)
		    || pseudo.equals(((Page) property).pseudo)));
    }
    
    /**
     * 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 == auto;
    }
    
}

--- NEW FILE: PageATSC.java ---
//
// $Id: PageATSC.java,v 1.1 2005/08/23 16:25:02 ylafon Exp $
// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
//
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
/*
 */
package org.w3c.css.properties.paged;
import org.w3c.css.parser.CssStyle;
import org.w3c.css.properties.css1.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.CssOperator;
import org.w3c.css.values.CssValue;

/**
 * @version $Revision: 1.1 $
 */
public class PageATSC extends CssProperty 
    implements CssOperator {
    
    CssValue value;
    CssValue pseudo;

    private static CssIdent auto = new CssIdent("auto");
    
    
    /**
     * Create a new CssPageATSC
     */
    public PageATSC() {
	value = auto;
    }
    
    /**
     * Create a new CssPageATSC
     *
     * @param expression The expression for this property
     * @exception InvalidParamException Values are incorrect
     */  
    public PageATSC(ApplContext ac, CssExpression expression,
	    boolean check) throws InvalidParamException {
	
	if(check && expression.getCount() > 2) {
	    throw new InvalidParamException("unrecognize", ac);
	}
	
	CssValue val = expression.getValue();
	char op = expression.getOperator();
	
	setByUser();
		
	ac.getFrame().addWarning("atsc", val.toString());

	if (val.equals(auto)) {
	    if(expression.getCount() > 1) {
		throw new InvalidParamException("unrecognize", ac);
	    }
	    value = val;
	    expression.next();
	} else if (val instanceof CssIdent) {
	    value = val;
	    expression.next();
	    if (!expression.end()) {
		val = expression.getValue();
		if ((op == SPACE) && (val instanceof CssIdent)) {
		    pseudo = val;
		    expression.next();
		    return;
		} else {
		    throw new InvalidParamException("value", 
						    val.toString(), 
						    getPropertyName(), ac);
		}
	    }
	} else {
	    throw new InvalidParamException("value", 
					    val.toString(), getPropertyName(), ac);
	}
    }
    
    public PageATSC(ApplContext ac, CssExpression expression) 
	throws InvalidParamException {
	this(ac, expression, false);
    }
    
    /**
     * Returns the value of this property
     */
    public Object get() {
	return null;
    }
    
    /**
     * Returns the name of this property
     */  
    public String getPropertyName() {
	return "page";
    }
    
    /**
     * Returns a string representation of the object.
     */
    public String toString() {
	if (pseudo != null) {
	    return value + " " + pseudo;
	} else {
	    return value.toString();
	}
    }
    
    /**
     * Add this property to the CssStyle.
     *
     * @param style The CssStyle
     */
    public void addToStyle(ApplContext ac, CssStyle style) {
	Css2Style style0 = (Css2Style) style;
	if (style0.pageATSC != null)
	    style0.addRedefinitionWarning(ac, this);
	style0.pageATSC = 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 ((Css2Style) style).getPageATSC();
	} else {
	    return ((Css2Style) style).pageATSC;
	}
    }
    
    /**
     * Compares two properties for equality.
     *
     * @param value The other property.
     */  
    public boolean equals(CssProperty property) {
	return (property instanceof PageATSC 
		&& value == ((PageATSC) property).value
		&& ((pseudo == null)
		    || pseudo.equals(((PageATSC) property).pseudo)));
    }
    
    /**
     * 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 == auto;
    }
    
}

--- NEW FILE: PagedProperty.java ---
//
// $Id: PagedProperty.java,v 1.1 2005/08/23 16:25:02 ylafon Exp $
// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
//
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
/*
 */

package org.w3c.css.properties.paged;

import org.w3c.css.properties.css1.CssProperty;

/**
 * @version $Revision: 1.1 $
 */
public abstract class PagedProperty extends CssProperty {

  /**
   * Returns true if the property is inherited
   */
  public boolean Inherited() {
    return PagedProperties.getInheritance(this);
  }

}

--- NEW FILE: Orphans.java ---
//
// $Id: Orphans.java,v 1.1 2005/08/23 16:25:02 ylafon Exp $
// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
//
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
/*
 */

package org.w3c.css.properties.paged;

import org.w3c.css.parser.CssStyle;
import org.w3c.css.properties.css1.CssProperty;
import org.w3c.css.util.ApplContext;
import org.w3c.css.util.InvalidParamException;
import org.w3c.css.values.CssExpression;
import org.w3c.css.values.CssNumber;
import org.w3c.css.values.CssValue;


/**
 */
public class Orphans extends PagedProperty {
    
    CssValue value;
    
    /**
     * Create a new Orphans
     */  
    public Orphans() {
	value = new CssNumber(null, 2);
    }
    
    /**
     * Creates a new CssOrphans
     *
     * @param expression the expression of the size
     * @exception InvalidParamException The expression is incorrect
     */  
    public Orphans(ApplContext ac, CssExpression expression,
	    boolean check) throws InvalidParamException {
	
	if(check && expression.getCount() > 1) {
	    throw new InvalidParamException("unrecognize", ac);
	}
	
	CssValue val = expression.getValue();
	setByUser();

	if (val.equals(inherit)) {
	    value = inherit;
	    expression.next();
	    return;
	} else if (val instanceof CssNumber) {
	    if (((CssNumber) val).isInteger()) {
		value = val;
		expression.next();
		return;
	    } else {
		throw new InvalidParamException("integer", 
						val.toString(), 
						getPropertyName(), ac);
	    }
	} 
	
	throw new InvalidParamException("value", 
					    val.toString(), 
					    getPropertyName(), ac);
    }
    
    public Orphans(ApplContext ac, CssExpression expression) 
	throws InvalidParamException {
	this(ac, expression, false);
    }
    
    /**
     * Returns the current value
     */  
    public Object get() {
	return value;
    }
    
    /**
     * Returns true if this property is "softly" inherited
     * e.g. his value equals inherit
     */
    public boolean isSoftlyInherited() {
	return value == inherit;
    }
    
    /**
     * Returns a string representation of the object.
     */
    public String toString() {
	return value.toString();
    }
    
    
    /**
     * Returns the name of this property
     */  
    public String getPropertyName() {
	return "orphans";
    }
    
    /**
     * Add this property to the CssStyle.
     *
     * @param style The CssStyle
     */
    public void addToStyle(ApplContext ac, CssStyle style) {
	Css2Style style0 = (Css2Style) style;
	if (style0.orphans != null) {
	    style.addRedefinitionWarning(ac, this);
	}
	style0.orphans = 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 ((Css2Style) style).getOrphans();
	} else {
	    return ((Css2Style) style).orphans;
	}
    }
    
    /**
     * Compares two properties for equality.
     *
     * @param value The other property.
     */  
    public boolean equals(CssProperty property) {
	if (value == null) {
	    return (property instanceof Orphans && 
		    ((Orphans) property).value == value);
	} else {
	    return (property instanceof Orphans && 
		    ((Orphans) property).value.equals(value));
	}
    }
    
}

--- NEW FILE: PageBreakAfterATSC.java ---
//
// $Id: PageBreakAfterATSC.java,v 1.1 2005/08/23 16:25:02 ylafon Exp $
// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
//
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
/*
 */
package org.w3c.css.properties.paged;
import org.w3c.css.parser.CssStyle;
import org.w3c.css.properties.css1.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.CssOperator;
import org.w3c.css.values.CssValue;

/**
 * @version $Revision: 1.1 $
 */
public class PageBreakAfterATSC extends CssProperty 
    implements CssOperator {
    
    int value;
    
    private static String PAGEBREAKAFTER[] = {
	"auto", "always", "avoid", "left", "right", "inherit" };
    
    private static int[] hash_values;
    
    
    /**
     * Create a new CssPageBreakAfterATSC
     */
    public PageBreakAfterATSC() {
	value = 0;
    }
    
    /**
     * Create a new CssPageBreakAfterATSC
     *
     * @param expression The expression for this property
     * @exception InvalidParamException Values are incorrect
     */  
    public PageBreakAfterATSC(ApplContext ac, CssExpression expression,
	    boolean check) throws InvalidParamException {
	
	if(check && expression.getCount() > 1) {
	    throw new InvalidParamException("unrecognize", ac);
	}
	
	CssValue val = expression.getValue();
//	char op = expression.getOperator();
	
	setByUser();

	ac.getFrame().addWarning("atsc", val.toString());
		
	if (val instanceof CssIdent) {
	    int hash = val.hashCode();
	    
	    for (int i = 0; i < PAGEBREAKAFTER.length; i++) {
		if (hash_values[i] == hash) {
		    value = i;
		    expression.next();
		    return;
		}
	    }
	}
	
	throw new InvalidParamException("value", 
					val.toString(), getPropertyName(), ac);
    }
    
    public PageBreakAfterATSC(ApplContext ac, CssExpression expression) 
	throws InvalidParamException {
	this(ac, expression, false);
    }
    
    /**
     * Returns the value of this property
     */
    public Object get() {
	return null;
    }
    
    /**
     * Returns the name of this property
     */  
    public String getPropertyName() {
	return "page-break-after";
    }
    
    /**
     * Returns true if this property is "softly" inherited
     * e.g. his value equals inherit
     */
    public boolean isSoftlyInherited() {
	return value == PAGEBREAKAFTER.length - 1;
    }
    
    /**
     * Returns a string representation of the object.
     */
    public String toString() {
	return PAGEBREAKAFTER[value];
    }
    
    /**
     * Add this property to the CssStyle.
     *
     * @param style The CssStyle
     */
    public void addToStyle(ApplContext ac, CssStyle style) {
	Css2Style style0 = (Css2Style) style;
	if (style0.pageBreakAfterATSC != null)
	    style0.addRedefinitionWarning(ac, this);
	style0.pageBreakAfterATSC = 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 ((Css2Style) style).getPageBreakAfterATSC();
	} else {
	    return ((Css2Style) style).pageBreakAfterATSC;
	}
    }
    
    /**
     * Compares two properties for equality.
     *
     * @param value The other property.
     */  
    public boolean equals(CssProperty property) {
	return (property instanceof PageBreakAfterATSC 
		&& value == ((PageBreakAfterATSC) 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[PAGEBREAKAFTER.length];
	for (int i=0; i<PAGEBREAKAFTER.length; i++)
	    hash_values[i] = PAGEBREAKAFTER[i].hashCode();
    }
}

--- NEW FILE: PageBreakInside.java ---
//
// $Id: PageBreakInside.java,v 1.1 2005/08/23 16:25:02 ylafon Exp $
// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
//
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
/*
 */
package org.w3c.css.properties.paged;
import org.w3c.css.parser.CssStyle;
import org.w3c.css.properties.css1.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.CssOperator;
import org.w3c.css.values.CssValue;

/**
 * @version $Revision: 1.1 $
 */
public class PageBreakInside extends CssProperty 
    implements CssOperator {
    
    int value;
    
    private static String PAGEBREAKINSIDE[] = {
	"auto", "avoid", "inherit" };
    
    private static int[] hash_values;
    
    
    /**
     * Create a new CssPageBreakInside
     */
    public PageBreakInside() {
	value = 0;
    }
    
    /**
     * Create a new CssPageBreakInside
     *
     * @param expression The expression for this property
     * @exception InvalidParamException Values are incorrect
     */  
    public PageBreakInside(ApplContext ac, CssExpression expression,
	    boolean check) throws InvalidParamException {
	
	if(check && expression.getCount() > 1) {
	    throw new InvalidParamException("unrecognize", ac);
	}
	
	CssValue val = expression.getValue();
//	char op = expression.getOperator();
	
	setByUser();
		
	if (val instanceof CssIdent) {
	    int hash = val.hashCode();
	    
	    for (int i = 0; i < PAGEBREAKINSIDE.length; i++) {
		if (hash_values[i] == hash) {
		    value = i;
		    expression.next();
		    return;
		}
	    }
	}
	
	throw new InvalidParamException("value", 
					val.toString(), getPropertyName(), ac);
    }
    
    public PageBreakInside(ApplContext ac, CssExpression expression) 
	throws InvalidParamException {
	this(ac, expression, false);
    }
    
    /**
     * Returns the value of this property
     */
    public Object get() {
	return null;
    }
    
    /**
     * Returns the name of this property
     */  
    public String getPropertyName() {
	return "page-break-inside";
    }
    
    /**
     * Returns true if this property is "softly" inherited
     * e.g. his value equals inherit
     */
    public boolean isSoftlyInherited() {
	return value == PAGEBREAKINSIDE.length - 1;
    }
    
    /**
     * Returns a string representation of the object.
     */
    public String toString() {
	return PAGEBREAKINSIDE[value];
    }
    
    /**
     * Add this property to the CssStyle.
     *
     * @param style The CssStyle
     */
    public void addToStyle(ApplContext ac, CssStyle style) {
	Css2Style style0 = (Css2Style) style;
	if (style0.pageBreakInside != null)
	    style0.addRedefinitionWarning(ac, this);
	style0.pageBreakInside = 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 ((Css2Style) style).getPageBreakInside();
	} else {
	    return ((Css2Style) style).pageBreakInside;
	}
    }
    
    /**
     * Compares two properties for equality.
     *
     * @param value The other property.
     */  
    public boolean equals(CssProperty property) {
	return (property instanceof PageBreakInside 
		&& value == ((PageBreakInside) 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[PAGEBREAKINSIDE.length];
	for (int i=0; i<PAGEBREAKINSIDE.length; i++)
	    hash_values[i] = PAGEBREAKINSIDE[i].hashCode();
    }
}

--- NEW FILE: Makefile ---
SRCS = Css2Properties.java Css2Property.java Css2Style.java

OBJS = $(SRCS:.java=.class)

PACKAGE = org.w3c.css.properties2
JAVAC = /usr/local/java11/bin/javac
JAVADOC = javadoc
JAVADOCFLAGS = -version -d docs -protected
JAVACFLAGS = 
MAKEDEPEND = jmakedepend

.SUFFIXES: .class .java
.java.class:; $(JAVAC) $(JAVACFLAGS) $<

all: $(OBJS)

javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)

clean:; -rm -f $(OBJS) *~ core

depend:; $(MAKEDEPEND) $(SRCS)

# DO NOT DELETE THIS LINE -- make depend depends on it.
Css2Style.class:: Css2Style.java\
	/usr/local/java11/lib/classes.zip\
	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.util/Warnings.class\
	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.parser/CssPrinterStyle.class\
	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssStyle.class
Css2Properties.class:: Css2Properties.java\
	/usr/local/java11/lib/classes.zip\
	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.properties/CssProperty.class
Css2Property.class:: Css2Property.java\
	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssProperty.class

--- NEW FILE: OrphansATSC.java ---
//
// $Id: OrphansATSC.java,v 1.1 2005/08/23 16:25:02 ylafon Exp $
// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
//
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
/*
 */

package org.w3c.css.properties.paged;

import org.w3c.css.parser.CssStyle;
import org.w3c.css.properties.css1.CssProperty;
import org.w3c.css.util.ApplContext;
import org.w3c.css.util.InvalidParamException;
import org.w3c.css.values.CssExpression;
import org.w3c.css.values.CssNumber;
import org.w3c.css.values.CssValue;


/**
 */
public class OrphansATSC extends PagedProperty {
    
    CssValue value;
    
    /**
     * Create a new OrphansATSC
     */  
    public OrphansATSC() {
	value = new CssNumber(null, 2);
    }
    
    /**
     * Creates a new CssOrphansATSC
     *
     * @param expression the expression of the size
     * @exception InvalidParamException The expression is incorrect
     */  
    public OrphansATSC(ApplContext ac, CssExpression expression,boolean check)
    	throws InvalidParamException {
	
	if(check && expression.getCount() > 1) {
	    throw new InvalidParamException("unrecognize", ac);
	}
	
	CssValue val = expression.getValue();
	setByUser();

	ac.getFrame().addWarning("atsc", val.toString());

	if (val.equals(inherit)) {
	    value = inherit;
	    expression.next();
	    return;
	} else if (val instanceof CssNumber) {
	    if (((CssNumber) val).isInteger()) {
		value = val;
		expression.next();
		return;
	    } else {
		throw new InvalidParamException("integer", 
						val.toString(), 
						getPropertyName(), ac);
	    }
	} 
	
	throw new InvalidParamException("value", 
					    val.toString(), 
					    getPropertyName(), ac);
    }
    
    public OrphansATSC(ApplContext ac, CssExpression expression) 
	throws InvalidParamException {
	this(ac, expression, false);
    }
    
    /**
     * Returns the current value
     */  
    public Object get() {
	return value;
    }
    
    /**
     * Returns true if this property is "softly" inherited
     * e.g. his value equals inherit
     */
    public boolean isSoftlyInherited() {
	return value == inherit;
    }
    
    /**
     * Returns a string representation of the object.
     */
    public String toString() {
	return value.toString();
    }
    
    
    /**
     * Returns the name of this property
     */  
    public String getPropertyName() {
	return "orphans";
    }
    
    /**
     * Add this property to the CssStyle.
     *
     * @param style The CssStyle
     */
    public void addToStyle(ApplContext ac, CssStyle style) {
	Css2Style style0 = (Css2Style) style;
	if (style0.orphansATSC != null) {
	    style.addRedefinitionWarning(ac, this);
	}
	style0.orphansATSC = 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 ((Css2Style) style).getOrphansATSC();
	} else {
	    return ((Css2Style) style).orphansATSC;
	}
    }
    
    /**
     * Compares two properties for equality.
     *
     * @param value The other property.
     */  
    public boolean equals(CssProperty property) {
	if (value == null) {
	    return (property instanceof OrphansATSC && 
		    ((OrphansATSC) property).value == value);
	} else {
	    return (property instanceof OrphansATSC && 
		    ((OrphansATSC) property).value.equals(value));
	}
    }
    
}

--- NEW FILE: PagedProperties.java ---
//
// $Id: PagedProperties.java,v 1.1 2005/08/23 16:25:02 ylafon Exp $
// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
//
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.css.properties.paged;

import java.net.URL;

import org.w3c.css.properties.css1.CssProperty;
import org.w3c.css.util.Utf8Properties;

/**
 * @version $Revision: 1.1 $
 */
public class PagedProperties {
	public static Utf8Properties properties;

  public static String getString(CssProperty property, String prop) {
		return properties.getProperty(property.getPropertyName() + "." + prop);
  }

  public static boolean getInheritance(CssProperty property) {
    return getString(property, "inherited").equals("true");
  }
  
  static {
		Utf8Properties properties = new Utf8Properties();
    try {
			URL url = PagedProperties.class
					.getResource("PagedDefault.properties");
      properties.load(url.openStream());
    } catch (Exception e) {
			System.err
					.println("org.w3c.css.properties.paged.PagedProperties: couldn't load properties ");
			System.err.println("  " + e.toString());
    }
  }
}

--- NEW FILE: Widows.java ---
//
// $Id: Widows.java,v 1.1 2005/08/23 16:25:02 ylafon Exp $
// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
//
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
/*
 */

package org.w3c.css.properties.paged;

import org.w3c.css.parser.CssStyle;
import org.w3c.css.properties.css1.CssProperty;
import org.w3c.css.util.ApplContext;
import org.w3c.css.util.InvalidParamException;
import org.w3c.css.values.CssExpression;
import org.w3c.css.values.CssNumber;
import org.w3c.css.values.CssValue;


/**
 */
public class Widows extends PagedProperty {
    
    CssValue value;
    
    /**
     * Create a new Widows
     */  
    public Widows() {
	value = new CssNumber(null, 2);
    }
    
    /**
     * Creates a new CssWidows
     *
     * @param expression the expression of the size
     * @exception InvalidParamException The expression is incorrect
     */  
    public Widows(ApplContext ac, CssExpression expression,
	    boolean check) throws InvalidParamException {
	
	if(check && expression.getCount() > 1) {
	    throw new InvalidParamException("unrecognize", ac);
	}
	
	CssValue val = expression.getValue();
	setByUser();

	if (val.equals(inherit)) {
	    value = inherit;
	    expression.next();
	    return;
	} else if (val instanceof CssNumber) {
	    if (((CssNumber) val).isInteger()) {
		value = val;
		expression.next();
		return;
	    } else {
		throw new InvalidParamException("integer", 
						val.toString(), 
						getPropertyName(), ac);
	    }
	} 
	
	throw new InvalidParamException("value", 
					    val.toString(), 
					    getPropertyName(), ac);
    }
    
    public Widows(ApplContext ac, CssExpression expression) 
	throws InvalidParamException {
	this(ac, expression, false);
    }
    
    /**
     * Returns the current value
     */  
    public Object get() {
	return value;
    }
    
    /**
     * Returns true if this property is "softly" inherited
     * e.g. his value equals inherit
     */
    public boolean isSoftlyInherited() {
	return value == inherit;
    }
    
    /**
     * Returns a string representation of the object.
     */
    public String toString() {
	return value.toString();
    }
    
    
    /**
     * Returns the name of this property
     */  
    public String getPropertyName() {
	return "widows";
    }
    
    /**
     * Add this property to the CssStyle.
     *
     * @param style The CssStyle
     */
    public void addToStyle(ApplContext ac, CssStyle style) {
	Css2Style style0 = (Css2Style) style;
	if (style0.widows != null) {
	    style.addRedefinitionWarning(ac, this);
	}
	style0.widows = 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 ((Css2Style) style).getWidows();
	} else {
	    return ((Css2Style) style).widows;
	}
    }
    
    /**
     * Compares two properties for equality.
     *
     * @param value The other property.
     */  
    public boolean equals(CssProperty property) {
	if (value == null) {
	    return (property instanceof Widows && 
		    ((Widows) property).value == value);
	} else {
	    return (property instanceof Widows && 
		    ((Widows) property).value.equals(value));
	}
    }
    
}

--- NEW FILE: PageBreakInsideATSC.java ---
//
// $Id: PageBreakInsideATSC.java,v 1.1 2005/08/23 16:25:02 ylafon Exp $
// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
//
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
/*
 */
package org.w3c.css.properties.paged;
import org.w3c.css.parser.CssStyle;
import org.w3c.css.properties.css1.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.CssOperator;
import org.w3c.css.values.CssValue;

/**
 * @version $Revision: 1.1 $
 */
public class PageBreakInsideATSC extends CssProperty 
    implements CssOperator {
    
    int value;
    
    private static String PAGEBREAKINSIDE[] = {
	"auto", "avoid", "inherit" };
    
    private static int[] hash_values;
    
    
    /**
     * Create a new CssPageBreakInsideATSC
     */
    public PageBreakInsideATSC() {
	value = 0;
    }
    
    /**
     * Create a new CssPageBreakInsideATSC
     *
     * @param expression The expression for this property
     * @exception InvalidParamException Values are incorrect
     */  
    public PageBreakInsideATSC(ApplContext ac, CssExpression expression,
	    boolean check) throws InvalidParamException {
	
	if(check && expression.getCount() > 1) {
	    throw new InvalidParamException("unrecognize", ac);
	}
	
	CssValue val = expression.getValue();
	//char op = expression.getOperator();
	
	setByUser();
		
	ac.getFrame().addWarning("atsc", val.toString());

	if (val instanceof CssIdent) {
	    int hash = val.hashCode();
	    
	    for (int i = 0; i < PAGEBREAKINSIDE.length; i++) {
		if (hash_values[i] == hash) {
		    value = i;
		    expression.next();
		    return;
		}
	    }
	}
	
	throw new InvalidParamException("value", 
					val.toString(), getPropertyName(), ac);
    }
    
    public PageBreakInsideATSC(ApplContext ac, CssExpression expression) 
	throws InvalidParamException {
	this(ac, expression, false);
    }
    
    /**
     * Returns the value of this property
     */
    public Object get() {
	return null;
    }
    
    /**
     * Returns the name of this property
     */  
    public String getPropertyName() {
	return "page-break-inside";
    }
    
    /**
     * Returns true if this property is "softly" inherited
     * e.g. his value equals inherit
     */
    public boolean isSoftlyInherited() {
	return value == PAGEBREAKINSIDE.length - 1;
    }
    
    /**
     * Returns a string representation of the object.
     */
    public String toString() {
	return PAGEBREAKINSIDE[value];
    }
    
    /**
     * Add this property to the CssStyle.
     *
     * @param style The CssStyle
     */
    public void addToStyle(ApplContext ac, CssStyle style) {
	Css2Style style0 = (Css2Style) style;
	if (style0.pageBreakInsideATSC != null)
	    style0.addRedefinitionWarning(ac, this);
	style0.pageBreakInsideATSC = 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 ((Css2Style) style).getPageBreakInsideATSC();
	} else {
	    return ((Css2Style) style).pageBreakInsideATSC;
	}
    }
    
    /**
     * Compares two properties for equality.
     *
     * @param value The other property.
     */  
    public boolean equals(CssProperty property) {
	return (property instanceof PageBreakInsideATSC
		&& value == ((PageBreakInsideATSC) 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[PAGEBREAKINSIDE.length];
	for (int i=0; i<PAGEBREAKINSIDE.length; i++)
	    hash_values[i] = PAGEBREAKINSIDE[i].hashCode();
    }
}

--- NEW FILE: PageBreakBeforeATSC.java ---
//
// $Id: PageBreakBeforeATSC.java,v 1.1 2005/08/23 16:25:02 ylafon Exp $
// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
//
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
/*
 */
package org.w3c.css.properties.paged;
import org.w3c.css.parser.CssStyle;
import org.w3c.css.properties.css1.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.CssOperator;
import org.w3c.css.values.CssValue;

/**
 * @version $Revision: 1.1 $
 */
public class PageBreakBeforeATSC extends CssProperty 
    implements CssOperator {
    
    int value;
    
    private static String PAGEBREAKBEFORE[] = {
	"auto", "always", "avoid", "left", "right", "inherit" };
    
    private static int[] hash_values;
    
    
    /**
     * Create a new CssPageBreakBeforeATSC
     */
    public PageBreakBeforeATSC() {
	value = 0;
    }
    
    /**
     * Create a new CssPageBreakBeforeATSC
     *
     * @param expression The expression for this property
     * @exception InvalidParamException Values are incorrect
     */  
    public PageBreakBeforeATSC(ApplContext ac, CssExpression expression,
	    boolean check) throws InvalidParamException {
	
	if(check && expression.getCount() > 1) {
	    throw new InvalidParamException("unrecognize", ac);
	}
	
	CssValue val = expression.getValue();
//	char op = expression.getOperator();
	
	setByUser();
		
	ac.getFrame().addWarning("atsc", val.toString());

	if (val instanceof CssIdent) {
	    int hash = val.hashCode();
	    
	    for (int i = 0; i < PAGEBREAKBEFORE.length; i++) {
		if (hash_values[i] == hash) {
		    value = i;
		    expression.next();
		    return;
		}
	    }
	}
	
	throw new InvalidParamException("value", 
					val.toString(), getPropertyName(), ac);
    }
    
    public PageBreakBeforeATSC(ApplContext ac, CssExpression expression) 
	throws InvalidParamException {
	this(ac, expression, false);
    }
    
    /**
     * Returns the value of this property
     */
    public Object get() {
	return null;
    }
    
    /**
     * Returns the name of this property
     */  
    public String getPropertyName() {
	return "page-break-before";
    }
    
    /**
     * Returns true if this property is "softly" inherited
     * e.g. his value equals inherit
     */
    public boolean isSoftlyInherited() {
	return value == PAGEBREAKBEFORE.length - 1;
    }
    
    /**
     * Returns a string representation of the object.
     */
    public String toString() {
	return PAGEBREAKBEFORE[value];
    }
    
    /**
     * Add this property to the CssStyle.
     *
     * @param style The CssStyle
     */
    public void addToStyle(ApplContext ac, CssStyle style) {
	Css2Style style0 = (Css2Style) style;
	if (style0.pageBreakBeforeATSC != null)
	    style0.addRedefinitionWarning(ac, this);
	style0.pageBreakBeforeATSC = 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 ((Css2Style) style).getPageBreakBeforeATSC();
	} else {
	    return ((Css2Style) style).pageBreakBeforeATSC;
	}
    }
    
    /**
     * Compares two properties for equality.
     *
     * @param value The other property.
     */  
    public boolean equals(CssProperty property) {
	return (property instanceof PageBreakBeforeATSC 
		&& value == ((PageBreakBeforeATSC) 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[PAGEBREAKBEFORE.length];
	for (int i=0; i<PAGEBREAKBEFORE.length; i++)
	    hash_values[i] = PAGEBREAKBEFORE[i].hashCode();
    }
}

Received on Tuesday, 23 August 2005 16:25:26 UTC