pbwest 2002/09/22 23:37:35
Modified: src/org/apache/fop/fo Tag: FOP_0-20-0_Alt-Design
PropertySets.java
Log:
Changed initialValueExpansion() to initialValueSHandExpansion().
Added expandCompoundProperty(), copyValueToSet()
and initialValueCompoundExpansion().
Revision Changes Path
No revision
No revision
1.1.2.14 +100 -33 xml-fop/src/org/apache/fop/fo/Attic/PropertySets.java
Index: PropertySets.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/Attic/PropertySets.java,v
retrieving revision 1.1.2.13
retrieving revision 1.1.2.14
diff -u -r1.1.2.13 -r1.1.2.14
--- PropertySets.java 21 Sep 2002 04:32:12 -0000 1.1.2.13
+++ PropertySets.java 23 Sep 2002 06:37:35 -0000 1.1.2.14
@@ -714,30 +714,13 @@
int property = value.getProperty();
ROIntArray expansion = getSHandExpansionSet(property);
PropertyValueList list = new PropertyValueList(property);
- for (int i = 0; i < expansion.length; i++) {
- int expandedProp = expansion.get(i);
- PropertyValue expandedPropValue;
- // The PropertyValue must be cloneable
- // Generally, this method will be called with one of the
- // pseudo-values - Inherit, FromParent or FromNearestSpecified
- // e.g. - and becaue those properties may have individual
- // IndirectValue settings, the value for each expanded
- // property must be unique.`
- try {
- expandedPropValue = (PropertyValue)(value.clone());
- } catch (CloneNotSupportedException e) {
- throw new PropertyException(e.getMessage());
- }
-
- expandedPropValue.setProperty(expandedProp);
- list.add(expandedPropValue);
- }
- return list;
+ return copyValueToSet(value, expansion, list);
}
/**
* Generate a list of the intial values of each property in a
- * shorthand expansion
+ * shorthand expansion. Note that this will be a list of
+ * <b>references</b> to the initial values.
* @param foTree the <tt>FOTree</tt> for which properties are being
* processed
* @param property <tt>int</tt> property index
@@ -745,7 +728,7 @@
* expansions for the (shorthand) property
* @exception <tt>PropertyException</tt>
*/
- public static PropertyValueList initialValueExpansion
+ public static PropertyValueList initialValueSHandExpansion
(FOTree foTree, int property)
throws PropertyException
{
@@ -753,17 +736,9 @@
PropertyValueList list = new PropertyValueList(property);
for (int i = 0; i < expansion.length; i++) {
int expandedProp = expansion.get(i);
- PropertyValue expandedPropValue;
PropertyValue specified
= foTree.getInitialSpecifiedValue(expandedProp);
- // The PropertyValue must be cloneable
- try {
- expandedPropValue = (PropertyValue)(specified.clone());
- } catch (CloneNotSupportedException e) {
- throw new PropertyException(e.getMessage());
- }
-
- list.add(expandedPropValue);
+ list.add(specified);
}
return list;
}
@@ -1203,6 +1178,98 @@
,spaceStartNonCopyExpansion
,wordSpacingNonCopyExpansion
};
+
+ /**
+ * Expand the >tt>PropertyValue</tt> assigned to a compound property
+ * into <tt>propertyValues</tt> for the individual property components.
+ * N.B. This method assumes that the set of expansion properties is
+ * comprised of a copy and a non-copy set. For example, <space>
+ * compounds have a copy set of .minimum, .optimum and .maximum, and a
+ * non-copy set of .precedence and .conditionality. For each element of
+ * the copy set, the given value is cloned. For each member of the
+ * non-copy set, a reference to the initial value is taken. Any
+ * properties for which the non-copy set takes other than the initial
+ * value will have to arrange to override this method of the method from
+ * which it is invoked.
+ */
+ public static PropertyValueList expandCompoundProperty
+ (FOTree foTree, PropertyValue value)
+ throws PropertyException
+ {
+ int property = value.getProperty();
+ Integer compoundX =
+ (Integer)(compoundMap.get(Ints.consts.get(property)));
+ if (compoundX == null)
+ throw new PropertyException
+ (PropNames.getPropertyName(property) + " (" + property + ") "
+ + " is not a compound property.");
+ int compoundIdx = compoundX.intValue();
+ PropertyValueList list = new PropertyValueList(property);
+ ROIntArray expansion;
+ // Expand the copy components
+ list = copyValueToSet
+ (value, compoundCopyExpansions[compoundIdx], list);
+ // Expand the non-copy components
+ return initialValueCompoundExpansion
+ (foTree, compoundNonCopyExpansions[compoundIdx], list);
+ }
+
+ /**
+ * Clone the given property value for each property in the given
+ * expansion set. Append the new property values to the given list.
+ * @param value - the property value to clone.
+ * @param expansionSet - the set of indices of the expansion properties.
+ * @param list - the list to which to append the expansion elements.
+ * @return the original <tt>PropertyValueList</tt> containing the
+ * appended expansions.
+ * @exception <tt>PropertyException</tt>
+ */
+ private static PropertyValueList copyValueToSet(PropertyValue value,
+ ROIntArray expansionSet, PropertyValueList list)
+ throws PropertyException
+ {
+ for (int i = 0; i < expansionSet.length; i++) {
+ int expandedProp = expansionSet.get(i);
+ PropertyValue expandedPropValue;
+ // The PropertyValue must be cloneable
+ // The property associated with each PV in the expansion will
+ // necessarily be different.
+ try {
+ expandedPropValue = (PropertyValue)(value.clone());
+ } catch (CloneNotSupportedException e) {
+ throw new PropertyException(e.getMessage());
+ }
+
+ expandedPropValue.setProperty(expandedProp);
+ list.add(expandedPropValue);
+ }
+ return list;
+ }
+
+ /**
+ * Append the initial values of each non-copy property in a
+ * compound expansion to a list. Note that these elements will be
+ * <b>references</b> to the initial values.
+ * @param foTree - the <tt>FOTree</tt> of the node whose properties are
+ * being processed.
+ * @param expansion - the set of indices of the expansion properties.
+ * @param list - the list to which to append the expansion elements.
+ * @return the original <tt>PropertyValueList</tt> containing the
+ * appended initial value expansions for the (compound) property.
+ * @exception <tt>PropertyException</tt>
+ */
+ public static PropertyValueList initialValueCompoundExpansion
+ (FOTree foTree, ROIntArray expansion, PropertyValueList list)
+ throws PropertyException
+ {
+ for (int i = 0; i < expansion.length; i++) {
+ int expandedProp = expansion.get(i);
+ PropertyValue specified
+ = foTree.getInitialSpecifiedValue(expandedProp);
+ list.add(specified);
+ }
+ return list;
+ }
private PropertySets (){}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]