pbwest 2002/09/20 21:39:32
Modified: src/org/apache/fop/fo Tag: FOP_0-20-0_Alt-Design
Properties.java
Log:
Changed FOTree arg to refineParsing() to FONode.
Added resolve() calls to IndirectValues.
Added refineExpansionList() and applied to shorthand expansions.
Revision Changes Path
No revision
No revision
1.1.2.25 +245 -155 xml-fop/src/org/apache/fop/fo/Attic/Properties.java
Index: Properties.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/Attic/Properties.java,v
retrieving revision 1.1.2.24
retrieving revision 1.1.2.25
diff -u -r1.1.2.24 -r1.1.2.25
--- Properties.java 18 Sep 2002 15:42:12 -0000 1.1.2.24
+++ Properties.java 21 Sep 2002 04:39:30 -0000 1.1.2.25
@@ -60,6 +60,7 @@
import org.apache.fop.datatypes.ShadowEffect;
import org.apache.fop.datatypes.Slash;
import org.apache.fop.datatypes.indirect.Inherit;
+import org.apache.fop.datatypes.indirect.InheritedValue;
import org.apache.fop.datatypes.indirect.FromParent;
import org.apache.fop.datatypes.indirect.FromNearestSpecified;
@@ -313,19 +314,19 @@
*
* <p>This method is overriden by individual property classes which
* require specific processing.
- * @param foTree - the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value - <tt>PropertyValue</tt> returned by the parser
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
- return refineParsing(foTree, value, NOT_NESTED);
+ return refineParsing(foNode, value, NOT_NESTED);
}
/**
* Do the work for the two argument refineParsing method.
- * @param foTree - the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value - <tt>PropertyValue</tt> returned by the parser
* @param nested - <tt>boolean</tt> indicating whether this method is
* called normally (false), or as part of another <i>refineParsing</i>
@@ -333,13 +334,14 @@
* @see #refineParsing(FOTree,PropertyValue)
*/
protected static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value, boolean nested)
+ (FONode foNode, PropertyValue value, boolean nested)
throws PropertyException
{
int property = value.getProperty();
String propName = PropNames.getPropertyName(property);
int datatype = PropertyConsts.dataTypes.get(property);
int proptype = value.getType();
+ PropertyValue pv;
switch (proptype) {
case PropertyValue.NUMERIC:
// Can be any of
@@ -363,7 +365,7 @@
if ((datatype & ENUM) != 0)
return new EnumType(property, ncname);
if ((datatype & MAPPED_LENGTH) != 0)
- return (new MappedNumeric(property, ncname, foTree))
+ return (new MappedNumeric(property, ncname, foNode.foTree))
.getMappedNumValue();
case PropertyValue.LITERAL:
// Can be LITERAL or CHARACTER_T
@@ -396,10 +398,28 @@
if ((datatype & MIMETYPE) != 0) return value;
throw new PropertyException
("mimetype invalid for " + propName);
+ // The following types cannot have their values validated in advance.
+ // The result must be validated from within the property type.
+ case PropertyValue.FROM_PARENT:
+ pv = ((FromParent)value).resolve(foNode);
+ if (pv == value) return value; // unable to resolve
+ // TODO: validate here
+ return pv;
+ case PropertyValue.FROM_NEAREST_SPECIFIED:
+ pv = ((FromNearestSpecified)value).resolve(foNode);
+ if (pv == value) return value; // unable to resolve
+ // TODO: validate here
+ return pv;
+ case PropertyValue.INHERITED_VALUE:
+ pv = ((InheritedValue)value).resolve(foNode);
+ if (pv == value) return value; // unable to resolve
+ // TODO: validate here
+ return pv;
default:
if ( ! nested) {
if (proptype == PropertyValue.INHERIT) {
- if ((datatype & INHERIT) != 0) return value;
+ if ((datatype & INHERIT) != 0)
+ return ((Inherit)value).resolve(foNode);
throw new PropertyException
("'inherit' invalid for " + propName);
}
@@ -411,6 +431,41 @@
}
/**
+ * Refine a list of property values against their properties.
+ * Expansion lists are generated by shorthand and compound expansion.
+ * The set of properties will, in general, be different from the
+ * generating property, which will be the one associated with the list
+ * itself.
+ * @param foNode - the <tt>FONode</tt> for which the properties are
+ * being processed.
+ * @param list - the list of <tt>PropertyValues</tt> to be refined.
+ * @return a <tt>PropertyValueList>/tt> containing the refined property
+ * values.
+ */
+ private static PropertyValueList refineExpansionList
+ (FONode foNode, PropertyValueList list)
+ throws PropertyException
+ {
+ PropertyValueList newlist = new PropertyValueList(list.getProperty());
+ Iterator properties = list.iterator();
+ while (properties.hasNext()) {
+ // refine the next element
+ PropertyValue pv =
+ PropertyConsts.refineParsing
+ (foNode, (PropertyValue)(properties.next()));
+ // if it's a list, recursively refine. This will return a list
+ if (pv.getType() == PropertyValue.LIST) {
+ PropertyValueList pvl =
+ refineExpansionList(foNode, (PropertyValueList)pv);
+ newlist.addAll(pvl);
+ } else { // single element
+ newlist.add(pv);
+ }
+ }
+ return newlist;
+ }
+
+ /**
* Determine whether argument <i>list</i> contains a space-separated list
* from the parser.
* A space-separated list will be represented by a
@@ -534,31 +589,31 @@
* N.B. this is the order of elements defined in
* PropertySets.borderRightExpansion
*/
- protected static PropertyValue borderEdge(FOTree foTree,
+ protected static PropertyValue borderEdge(FONode foNode,
PropertyValue value, int styleProp, int colorProp, int widthProp)
throws PropertyException
{
return borderEdge
- (foTree, value, styleProp, colorProp, widthProp, NOT_NESTED);
+ (foNode, value, styleProp, colorProp, widthProp, NOT_NESTED);
}
protected static PropertyValue borderEdge
- (FOTree foTree, PropertyValue value, int styleProp,
+ (FONode foNode, PropertyValue value, int styleProp,
int colorProp, int widthProp, boolean nested)
throws PropertyException
{
if (value.getType() != PropertyValue.LIST) {
return processEdgeValue
- (foTree, value, styleProp, colorProp, widthProp, nested);
+ (foNode, value, styleProp, colorProp, widthProp, nested);
} else {
return processEdgeList
- (foTree, spaceSeparatedList((PropertyValueList)value),
+ (foNode, spaceSeparatedList((PropertyValueList)value),
styleProp, colorProp, widthProp);
}
}
private static PropertyValueList processEdgeValue
- (FOTree foTree, PropertyValue value, int styleProp,
+ (FONode foNode, PropertyValue value, int styleProp,
int colorProp, int widthProp, boolean nested)
throws PropertyException
{
@@ -567,18 +622,22 @@
if (type == PropertyValue.INHERIT ||
type == PropertyValue.FROM_PARENT ||
type == PropertyValue.FROM_NEAREST_SPECIFIED)
+ {
// Construct a list of Inherit values
- return PropertySets.expandAndCopySHand(value);
+ PropertyValueList list =
+ PropertySets.expandAndCopySHand(value);
+ return refineExpansionList(foNode, list);
+ }
}
// Make a list and pass to processList
PropertyValueList tmpList
= new PropertyValueList(value.getProperty());
tmpList.add(value);
return processEdgeList
- (foTree, tmpList, styleProp, colorProp, widthProp);
+ (foNode, tmpList, styleProp, colorProp, widthProp);
}
- private static PropertyValueList processEdgeList(FOTree foTree,
+ private static PropertyValueList processEdgeList(FONode foNode,
PropertyValueList value, int styleProp, int colorProp, int widthProp)
throws PropertyException
{
@@ -623,7 +682,7 @@
try {
widthFound =
- (new MappedNumeric(widthProp, ncname, foTree))
+ (new MappedNumeric(widthProp, ncname, foNode.foTree))
.getMappedNumValue();
} catch (PropertyException e) {}
if (widthFound != null) {
@@ -1047,19 +1106,19 @@
* a BackgroundPositionVertical Numeric or Inherit value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
if ( ! (value instanceof PropertyValueList)) {
- return processValue(foTree, value);
+ return processValue(foNode, value);
} else {
return processList
- (foTree, spaceSeparatedList((PropertyValueList)value));
+ (foNode, spaceSeparatedList((PropertyValueList)value));
}
}
private static PropertyValueList processValue
- (FOTree foTree, PropertyValue value) throws PropertyException
+ (FONode foNode, PropertyValue value) throws PropertyException
{
// Can be Inherit, ColorType, UriType, None, Numeric, or an
// NCName (i.e. enum token)
@@ -1069,18 +1128,19 @@
type == PropertyValue.FROM_NEAREST_SPECIFIED)
{
// Construct a list of Inherit values
- return PropertySets.expandAndCopySHand(value);
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(value));
} else {
// Make a list and pass to processList
PropertyValueList tmpList
= new PropertyValueList(value.getProperty());
tmpList.add(value);
- return processList(foTree, tmpList);
+ return processList(foNode, tmpList);
}
}
private static PropertyValueList processList
- (FOTree foTree, PropertyValueList value)
+ (FONode foNode, PropertyValueList value)
throws PropertyException
{
int property = value.getProperty();
@@ -1146,14 +1206,14 @@
"position overrides previous position");
if (tmpval == null)
position = BackgroundPosition.refineParsing
- (foTree, pval, IS_NESTED);
+ (foNode, pval, IS_NESTED);
else { // 2 elements
// make a space-separated list
PropertyValueList ssList = new PropertyValueList
(PropNames.BACKGROUND_POSITION);
ssList.add(posnList);
position = BackgroundPosition.refineParsing
- (foTree, ssList, IS_NESTED);
+ (foNode, ssList, IS_NESTED);
}
continue scanning_elements;
} // end of case NUMERIC
@@ -1236,11 +1296,11 @@
(PropNames.BACKGROUND_POSITION);
ssList.add(posnList);
position = BackgroundPosition.refineParsing
- (foTree, ssList, IS_NESTED);
+ (foNode, ssList, IS_NESTED);
} else { // one only
// Now send one NCName to BackgroundPosition
position = BackgroundPosition.refineParsing
- (foTree, pval, IS_NESTED);
+ (foNode, pval, IS_NESTED);
}
continue scanning_elements;
}
@@ -1386,20 +1446,20 @@
* containing the expansion of the shorthand. I.e. the first
* element is a value for BackgroundPositionHorizontal, and the
* second is for BackgroundPositionVertical.
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
- return refineParsing(foTree, value, NOT_NESTED);
+ return refineParsing(foNode, value, NOT_NESTED);
}
/**
* Do the work for the two argument refineParsing method.
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @param nested <tt>boolean</tt> indicating whether this method is
* called normally (false), or as part of another <i>refineParsing</i>
@@ -1408,11 +1468,11 @@
* @see #refineParsing(FOTree,PropertyValue)
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value, boolean nested)
+ (FONode foNode, PropertyValue value, boolean nested)
throws PropertyException
{
if ( ! (value instanceof PropertyValueList)) {
- return processValue(value, nested);
+ return processValue(foNode, value, nested);
} else {
return processList
(spaceSeparatedList((PropertyValueList)value));
@@ -1420,8 +1480,8 @@
}
private static PropertyValueList processValue
- (PropertyValue value, boolean nested)
- throws PropertyException
+ (FONode foNode, PropertyValue value, boolean nested)
+ throws PropertyException
{
PropertyValueList newlist
= new PropertyValueList(value.getProperty());
@@ -1433,8 +1493,8 @@
type == PropertyValue.FROM_PARENT ||
type == PropertyValue.FROM_NEAREST_SPECIFIED) {
// Construct a list of Inherit values
- newlist = PropertySets.expandAndCopySHand(value);
- return newlist;
+ newlist = refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(value));
}
}
@@ -1872,7 +1932,7 @@
public static final int inherited = NO;
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
int type = value.getType();
@@ -1880,7 +1940,8 @@
type == PropertyValue.FROM_PARENT ||
type == PropertyValue.FROM_NEAREST_SPECIFIED)
// Construct a list of Inherit values
- return PropertySets.expandAndCopySHand(value);
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(value));
PropertyValueList ssList = null;
// Must be a space-separated list or a single value from the
@@ -1907,7 +1968,7 @@
PropertyValue val = (PropertyValue)(values.next());
PropertyValue pv = null;
try {
- pv = BorderWidth.refineParsing(foTree, val, IS_NESTED);
+ pv = BorderWidth.refineParsing(foNode, val, IS_NESTED);
if (width != null)
MessageHandler.log("border: duplicate" +
"width overrides previous width");
@@ -1915,7 +1976,7 @@
continue;
} catch (PropertyException e) {}
try {
- pv = BorderStyle.refineParsing(foTree, val, IS_NESTED);
+ pv = BorderStyle.refineParsing(foNode, val, IS_NESTED);
if (style != null)
MessageHandler.log("border: duplicate" +
"style overrides previous style");
@@ -1923,7 +1984,7 @@
continue;
} catch (PropertyException e) {}
try {
- pv = BorderColor.refineParsing(foTree, val, IS_NESTED);
+ pv = BorderColor.refineParsing(foNode, val, IS_NESTED);
if (color != null)
MessageHandler.log("border: duplicate" +
"color overrides previous color");
@@ -1938,7 +1999,8 @@
}
// Construct the shorthand expansion list
PropertyValueList borderexp =
- PropertySets.initialValueExpansion(foTree, PropNames.BORDER);
+ PropertySets.initialValueExpansion
+ (foNode.foTree, PropNames.BORDER);
if (style != null)
borderexp = PropertySets.overrideSHandElements(borderexp,
(PropertyValueList)style);
@@ -2176,15 +2238,15 @@
* N.B. this is the order of elements defined in
* PropertySets.borderRightExpansion
*
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
- return Properties.borderEdge(foTree, value,
+ return Properties.borderEdge(foNode, value,
PropNames.BORDER_BOTTOM_STYLE,
PropNames.BORDER_BOTTOM_COLOR,
PropNames.BORDER_BOTTOM_WIDTH
@@ -2295,29 +2357,29 @@
* the third element is a value for border-bottom-color,
* the fourth element is a value for border-left-color.
*
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
- return refineParsing(foTree, value, NOT_NESTED);
+ return refineParsing(foNode, value, NOT_NESTED);
}
/**
* Do the work for the two argument refineParsing method.
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @param nested <tt>boolean</tt> indicating whether this method is
* called normally (false), or as part of another <i>refineParsing</i>
* method.
* @return <tt>PropertyValue</tt> the verified value
- * @see #refineParsing(FOTree,PropertyValue)
+ * @see #refineParsing(FONode,PropertyValue)
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value, boolean nested)
+ (FONode foNode, PropertyValue value, boolean nested)
throws PropertyException
{
int type = value.getType();
@@ -2326,10 +2388,12 @@
if (type == PropertyValue.INHERIT ||
type == PropertyValue.FROM_PARENT ||
type == PropertyValue.FROM_NEAREST_SPECIFIED)
- return PropertySets.expandAndCopySHand(value);
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(value));
}
if (type == PropertyValue.COLOR_TYPE)
- return PropertySets.expandAndCopySHand(value);
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(value));
if (type == PropertyValue.NCNAME) {
// Must be a standard color
ColorType color;
@@ -2341,7 +2405,8 @@
(((NCName)value).getNCName() +
" not a standard color for border-color");
}
- return PropertySets.expandAndCopySHand(color);
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(color));
}
else throw new PropertyException
("Invalid " + value.getClass().getName() +
@@ -2542,15 +2607,15 @@
* N.B. this is the order of elements defined in
* PropertySets.borderRightExpansion
*
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
- return Properties.borderEdge(foTree, value,
+ return Properties.borderEdge(foNode, value,
PropNames.BORDER_LEFT_STYLE,
PropNames.BORDER_LEFT_COLOR,
PropNames.BORDER_LEFT_WIDTH
@@ -2628,15 +2693,15 @@
* N.B. this is the order of elements defined in
* PropertySets.borderRightExpansion
*
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
- return Properties.borderEdge(foTree, value,
+ return Properties.borderEdge(foNode, value,
PropNames.BORDER_RIGHT_STYLE,
PropNames.BORDER_RIGHT_COLOR,
PropNames.BORDER_RIGHT_WIDTH
@@ -2750,12 +2815,12 @@
* Note: the Lengths cannot be percentages (what about relative
* lengths?)
*
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
int type = value.getType();
@@ -2763,11 +2828,13 @@
if (type == PropertyValue.INHERIT ||
type == PropertyValue.FROM_PARENT ||
type == PropertyValue.FROM_NEAREST_SPECIFIED)
- return PropertySets.expandAndCopySHand(value);
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(value));
if (type == PropertyValue.NUMERIC &&
((Numeric)value).isLength())
- return PropertySets.expandAndCopySHand(value);
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(value));
throw new PropertyException
("Invalid " + value.getClass().getName() +
@@ -2929,29 +2996,29 @@
* the third element is a value for border-bottom-style,
* the fourth element is a value for border-left-style.
*
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
- return refineParsing(foTree, value, NOT_NESTED);
+ return refineParsing(foNode, value, NOT_NESTED);
}
/**
* Do the work for the two argument refineParsing method.
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @param nested <tt>boolean</tt> indicating whether this method is
* called normally (false), or as part of another <i>refineParsing</i>
* method.
* @return <tt>PropertyValue</tt> the verified value
- * @see #refineParsing(FOTree,PropertyValue)
+ * @see #refineParsing(FONode,PropertyValue)
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value, boolean nested)
+ (FONode foNode, PropertyValue value, boolean nested)
throws PropertyException
{
int type = value.getType();
@@ -2960,7 +3027,8 @@
if (type == PropertyValue.INHERIT ||
type == PropertyValue.FROM_PARENT ||
type == PropertyValue.FROM_NEAREST_SPECIFIED)
- return PropertySets.expandAndCopySHand(value);
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(value));
}
if (type == PropertyValue.NCNAME) {
// Must be a border-style
@@ -2973,7 +3041,8 @@
(((NCName)value).getNCName() +
" not a border-style");
}
- return PropertySets.expandAndCopySHand(enum);
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(enum));
}
else throw new PropertyException
("Invalid " + value.getClass().getName() +
@@ -3049,15 +3118,15 @@
* N.B. this is the order of elements defined in
* PropertySets.borderRightExpansion
*
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
- return Properties.borderEdge(foTree, value,
+ return Properties.borderEdge(foNode, value,
PropNames.BORDER_TOP_STYLE,
PropNames.BORDER_TOP_COLOR,
PropNames.BORDER_TOP_WIDTH
@@ -3146,29 +3215,29 @@
* the third element is a value for border-bottom-width,
* the fourth element is a value for border-left-width.
*
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
- return refineParsing(foTree, value, NOT_NESTED);
+ return refineParsing(foNode, value, NOT_NESTED);
}
/**
* Do the work for the two argument refineParsing method.
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @param nested <tt>boolean</tt> indicating whether this method is
* called normally (false), or as part of another <i>refineParsing</i>
* method.
* @return <tt>PropertyValue</tt> the verified value
- * @see #refineParsing(FOTree,PropertyValue)
+ * @see #refineParsing(FONode,PropertyValue)
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value, boolean nested)
+ (FONode foNode, PropertyValue value, boolean nested)
throws PropertyException
{
int type = value.getType();
@@ -3177,7 +3246,8 @@
if (type == PropertyValue.INHERIT ||
type == PropertyValue.FROM_PARENT ||
type == PropertyValue.FROM_NEAREST_SPECIFIED)
- return PropertySets.expandAndCopySHand(value);
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(value));
}
if (type == PropertyValue.NCNAME) {
// Must be a border-width
@@ -3188,7 +3258,7 @@
try {
mapped =
(new MappedNumeric(PropNames.BORDER_TOP_WIDTH,
- ((NCName)value).getNCName(), foTree))
+ ((NCName)value).getNCName(), foNode.foTree))
.getMappedNumValue();
} catch (PropertyException e) {
throw new PropertyException
@@ -3197,7 +3267,8 @@
}
// Correct the property in the mapped Numeric
mapped.setProperty(PropNames.BORDER_WIDTH);
- return PropertySets.expandAndCopySHand(mapped);
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(mapped));
}
else throw new PropertyException
("Invalid " + value.getClass().getName() +
@@ -3221,11 +3292,13 @@
// There must be at least two
top = (new MappedNumeric
(PropNames.BORDER_TOP_WIDTH,
- ((NCName)(widths.next())).getNCName(), foTree)
+ ((NCName)(widths.next())).getNCName(),
+ foNode.foTree)
).getMappedNumValue();
right = (new MappedNumeric
(PropNames.BORDER_RIGHT_WIDTH,
- ((NCName)(widths.next())).getNCName(), foTree)
+ ((NCName)(widths.next())).getNCName(),
+ foNode.foTree)
).getMappedNumValue();
try {
bottom = (Numeric)(top.clone());
@@ -3240,12 +3313,14 @@
if (widths.hasNext())
bottom = (new MappedNumeric
(PropNames.BORDER_BOTTOM_WIDTH,
- ((NCName)(widths.next())).getNCName(), foTree)
+ ((NCName)(widths.next())).getNCName(),
+ foNode.foTree)
).getMappedNumValue();
if (widths.hasNext())
left = (new MappedNumeric
(PropNames.BORDER_LEFT_WIDTH,
- ((NCName)(widths.next())).getNCName(), foTree)
+ ((NCName)(widths.next())).getNCName(),
+ foNode.foTree)
).getMappedNumValue();
list = new PropertyValueList(PropNames.BORDER_WIDTH);
@@ -3429,12 +3504,12 @@
public static final int inherited = NO;
/*
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
int type = value.getType();
@@ -3598,12 +3673,12 @@
* The first element is a value for cue-before,
* the second element is a value for cue-after.
*
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
int type = value.getType();
@@ -3612,7 +3687,8 @@
type == PropertyValue.FROM_PARENT ||
type == PropertyValue.FROM_NEAREST_SPECIFIED ||
type == PropertyValue.URI_TYPE)
- return PropertySets.expandAndCopySHand(value);
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(value));
throw new PropertyException
("Invalid " + value.getClass().getName() +
" object for cue");
@@ -4022,18 +4098,18 @@
* <p>The setup of the shorthand expansion list is determined by the
* above considerations.
*
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
PropertyValueList startList = null;
PropertyValueList fontList = null;
if (value.getType() != PropertyValue.LIST) {
- return processValue(foTree, value);
+ return processValue(foNode, value);
} else {
fontList = (PropertyValueList)value;
try {
@@ -4066,12 +4142,12 @@
+ "'font' expression");
startList = (PropertyValueList)tmpo;
}
- return processSpaceSepList(foTree, startList, fontList);
+ return processSpaceSepList(foNode, startList, fontList);
}
}
private static PropertyValueList processValue
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
// Can be Inherit, FromParent, FromNearestSpecified, a
@@ -4081,7 +4157,8 @@
type == PropertyValue.FROM_PARENT ||
type == PropertyValue.FROM_NEAREST_SPECIFIED)
{
- return PropertySets.expandAndCopySHand(value);
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(value));
}
// else not Inherit/From../From..
FontFamilySet family = null;
@@ -4096,6 +4173,8 @@
("Unrecognized NCName in font expression: " + ncname);
}
// A system font enum
+ // System font characteristics should require no further
+ // refinement
return SystemFontFunction.expandFontSHand
(PropNames.FONT, ncname);
}
@@ -4124,6 +4203,8 @@
* must be from the specification
* [font-style||font-variant||font-weight]?
*
+ * @param foNode the <tt>FONode</tt> with which this property is
+ * associated.
* @param list a <tt>PropertyValueList</tt> containing the actual
* space-separated list; i.e. the single inner list from the
* outer list returned by the parser. or removed from the front of
@@ -4138,7 +4219,7 @@
* @exception PropertyValueException
*/
private static PropertyValueList
- processSpaceSepList(FOTree foTree,
+ processSpaceSepList(FONode foNode,
PropertyValueList list,
PropertyValueList fontList)
throws PropertyException
@@ -4178,11 +4259,11 @@
familyStart = slash + 2;
fontsize = slash - 1;
size = FontSize.refineParsing
- (foTree, propvals[fontsize], IS_NESTED);
+ (foNode, propvals[fontsize], IS_NESTED);
// derive the line-height
// line-height is at slash + 1
height = LineHeight.refineParsing
- (foTree, propvals[slash + 1], IS_NESTED);
+ (foNode, propvals[slash + 1], IS_NESTED);
} else {
// Don''t know where slash is. If anything precedes the
// font-family, it must be a font-size. Look for that.
@@ -4193,7 +4274,7 @@
String name = ((NCName)propvals[fontsize]).getNCName();
try {
size = new MappedNumeric
- (PropNames.FONT_SIZE, name, foTree);
+ (PropNames.FONT_SIZE, name, foNode.foTree);
} catch (PropertyException e) {
// Attempt to derive mapped numeric failed
continue;
@@ -4238,7 +4319,7 @@
if (fontList.size() == 0
&& familyStart == (propvals.length - 1)) {
fontset = FontFamily.refineParsing
- (foTree, propvals[familyStart], IS_NESTED);
+ (foNode, propvals[familyStart], IS_NESTED);
} else {
// Must develop a list to prepend to fontList
PropertyValueList tmpList =
@@ -4248,7 +4329,7 @@
fontList.addFirst(tmpList);
// Get a FontFamilySet
fontset = FontFamily.refineParsing
- (foTree, fontList, IS_NESTED);
+ (foNode, fontList, IS_NESTED);
}
// Only font-style font-variant and font-weight, in any order
// remain as possibilities at the front of the expression
@@ -4256,7 +4337,7 @@
PropertyValue pv = null;
try {
pv = FontStyle.refineParsing
- (foTree, propvals[i], IS_NESTED);
+ (foNode, propvals[i], IS_NESTED);
if (style != null)
MessageHandler.log("font: duplicate" +
"style overrides previous style");
@@ -4266,7 +4347,7 @@
try {
pv = FontVariant.refineParsing
- (foTree, propvals[i], IS_NESTED);
+ (foNode, propvals[i], IS_NESTED);
if (variant != null)
MessageHandler.log("font: duplicate" +
"variant overrides previous variant");
@@ -4276,7 +4357,7 @@
try {
pv = FontWeight.refineParsing
- (foTree, propvals[i], IS_NESTED);
+ (foNode, propvals[i], IS_NESTED);
if (weight != null)
MessageHandler.log("font: duplicate" +
"weight overrides previous weight");
@@ -4292,7 +4373,8 @@
// values of individual components
newlist =
- PropertySets.initialValueExpansion(foTree, PropNames.FONT);
+ PropertySets.initialValueExpansion
+ (foNode.foTree, PropNames.FONT);
// For each discovered property, override the value in the
// initial value expansion.
ListIterator expansions = newlist.listIterator();
@@ -4357,7 +4439,7 @@
}
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
// There is no point in attempting to validate the enumeration
@@ -4373,11 +4455,11 @@
// be at the top level, and any font family names
// that contained spaces will be in PropertyValueLists.
- return refineParsing(foTree, value, NOT_NESTED);
+ return refineParsing(foNode, value, NOT_NESTED);
}
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value, boolean nested)
+ (FONode foNode, PropertyValue value, boolean nested)
throws PropertyException
{
int property = value.getProperty();
@@ -4385,8 +4467,7 @@
// First, check that we have a list
if (type != PropertyValue.LIST) {
if ( ! nested && type == PropertyValue.INHERIT) {
- return value; // DUMMY
- //return ((Inherit)value).resolve(foTree);
+ return ((Inherit)value).resolve(foNode);
}
if ( ! (value instanceof StringType))
throw new PropertyException
@@ -4657,34 +4738,34 @@
public static final ROStringArray enumValues = enums;
/*
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
- return refineParsing(foTree, value, NOT_NESTED);
+ return refineParsing(foNode, value, NOT_NESTED);
}
/**
* Do the work for the two argument refineParsing method.
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @param nested <tt>boolean</tt> indicating whether this method is
* called normally (false), or as part of another <i>refineParsing</i>
* method.
* @return <tt>PropertyValue</tt> the verified value
- * @see #refineParsing(FOTree,PropertyValue)
+ * @see #refineParsing(FONode,PropertyValue)
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value, boolean nested)
+ (FONode foNode, PropertyValue value, boolean nested)
throws PropertyException
{
// Override the shadowed method to ensure that Integer values
// are limited to the valid numbers
- PropertyValue fw = Properties.refineParsing(foTree, value, nested);
+ PropertyValue fw = Properties.refineParsing(foNode, value, nested);
// If the result is an IntegerType, restrict the values
if (fw instanceof IntegerType) {
int weight = ((IntegerType)fw).getInt();
@@ -5549,12 +5630,12 @@
* the third element is a value for margin-bottom,
* the fourth element is a value for margin-left.
*
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
if ( ! (value instanceof PropertyValueList)) {
@@ -5562,9 +5643,13 @@
|| value instanceof FromParent
|| value instanceof FromNearestSpecified
)
- return PropertySets.expandAndCopySHand(value);
- return PropertySets.expandAndCopySHand
- (autoOrDistance(value));
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(value));
+ // N.B. Does this require further refinement?
+ // Where is Auto expanded?
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand
+ (autoOrDistance(value)));
} else {
PropertyValueList list =
spaceSeparatedList((PropertyValueList)value);
@@ -5936,12 +6021,12 @@
* the third element is a value for padding-bottom,
* the fourth element is a value for padding-left.
*
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
if ( ! (value instanceof PropertyValueList)) {
@@ -5951,7 +6036,8 @@
|| (value instanceof Numeric
&& ((Numeric)value).isDistance())
)
- return PropertySets.expandAndCopySHand(value);
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(value));
throw new PropertyException
("Invalid property value for 'padding': "
+ value.getClass().getName());
@@ -6253,12 +6339,12 @@
}
/*
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
if (value instanceof Inherit |
@@ -6266,7 +6352,8 @@
value instanceof FromNearestSpecified |
value instanceof Auto)
{
- return PropertySets.expandAndCopySHand(value);
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(value));
}
if (value instanceof NCName) {
EnumType enum = null;
@@ -6315,12 +6402,12 @@
= PageBreakAfter.rwEnumValues;
/*
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
if (value instanceof Inherit |
@@ -6328,7 +6415,8 @@
value instanceof FromNearestSpecified |
value instanceof Auto)
{
- return PropertySets.expandAndCopySHand(value);
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(value));
}
if (value instanceof NCName) {
EnumType enum = null;
@@ -6385,12 +6473,12 @@
public static final ROStringArray enumValues = enums;
/*
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
if (value instanceof Inherit |
@@ -6398,7 +6486,8 @@
value instanceof FromNearestSpecified |
value instanceof Auto)
{
- return PropertySets.expandAndCopySHand(value);
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(value));
}
if (value instanceof NCName) {
EnumType enum = null;
@@ -6543,19 +6632,20 @@
public static final ROStringArray enumValues = enums;
/*
- * @param foTree the <tt>FOTree</tt> being built
+ * @param foNode - the <tt>FONode</tt> being built
* @param value <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue value)
+ (FONode foNode, PropertyValue value)
throws PropertyException
{
if (value instanceof Inherit |
value instanceof FromParent |
value instanceof FromNearestSpecified)
{
- return PropertySets.expandAndCopySHand(value);
+ return refineExpansionList
+ (foNode, PropertySets.expandAndCopySHand(value));
}
if (value instanceof NCName) {
EnumType enum = null;
@@ -7021,16 +7111,16 @@
public static final int inherited = NO;
/*
- * @param foTree the <tt>FOTree</tt> being built
- * @param value <tt>PropertyValue</tt> returned by the parser
+ * @param foNode - the <tt>FONode</tt> being built
+ * @param list <tt>PropertyValue</tt> returned by the parser
* @return <tt>PropertyValue</tt> the verified value
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue list)
+ (FONode foNode, PropertyValue list)
throws PropertyException
{
if ( ! (list instanceof PropertyValueList))
- return Properties.refineParsing(foTree, list);
+ return Properties.refineParsing(foNode, list);
// Confirm that the list contains only UriType elements
Iterator iter = ((PropertyValueList)list).iterator();
while (iter.hasNext()) {
@@ -7536,14 +7626,14 @@
public static final ROStringArray enumValues = enums;
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue list)
+ (FONode foNode, PropertyValue list)
throws PropertyException
{
// Check for the enumeration. Look for a list of NCNames.
// N.B. it may be possible to perform further checks on the
// validity of the NCNames - do they match multi-case case names.
if ( ! (list instanceof PropertyValueList))
- return Properties.refineParsing(foTree, list);
+ return Properties.refineParsing(foNode, list);
PropertyValueList ssList =
spaceSeparatedList((PropertyValueList)list);
@@ -7814,7 +7904,7 @@
});
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue list)
+ (FONode foNode, PropertyValue list)
throws PropertyException
{
byte onMask = NO_DECORATION;
@@ -7919,12 +8009,12 @@
* specifier.
*/
public static PropertyValue refineParsing
- (FOTree foTree, PropertyValue list)
+ (FONode foNode, PropertyValue list)
throws PropertyException
{
int property = list.getProperty();
if ( ! (list instanceof PropertyValueList)) {
- return Properties.refineParsing(foTree, list);
+ return Properties.refineParsing(foNode, list);
}
if (((PropertyValueList)list).size() == 0)
throw new PropertyException
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]