You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by pb...@apache.org on 2002/08/01 05:56:00 UTC
cvs commit: xml-fop/src/org/apache/fop/fo PropertySets.java
pbwest 2002/07/31 20:56:00
Modified: src/org/apache/fop/fo Tag: FOP_0-20-0_Alt-Design
PropertySets.java
Log:
Added overrideSHandElements() for use with border shorthand expansion
Revision Changes Path
No revision
No revision
1.1.2.9 +66 -6 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.8
retrieving revision 1.1.2.9
diff -u -r1.1.2.8 -r1.1.2.9
--- PropertySets.java 4 Jul 2002 01:25:53 -0000 1.1.2.8
+++ PropertySets.java 1 Aug 2002 03:56:00 -0000 1.1.2.9
@@ -17,6 +17,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.ListIterator;
+import java.util.Iterator;
import java.util.Arrays;
import java.util.Collections;
@@ -767,9 +768,11 @@
* override the list element corresponding to the <tt>PropertyValue</tt>.
* Correspondence is based on the <em>property</em> field of the
* <tt>PropertyValue</tt>.
- * @param list the expansion <tt>PropertyValueList</tt>
- * @param value the overriding <tt>PropertyValue</tt>
- * @return <tt>PropertyValueList</tt> the new list
+ * @param expansionList the expansion <tt>PropertyValueList</tt>
+ * @param element the overriding <tt>PropertyValue</tt>
+ * @return <tt>PropertyValueList</tt> the expansion list with the
+ * appropriate element reset
+ * @exception <tt>PropertyException</tt>
*/
public static PropertyValueList overrideSHandElement
(PropertyValueList expansionList, PropertyValue element)
@@ -787,6 +790,63 @@
throw new PropertyException
("Unmatched property " + elementProp +
" in expansion list for " + expansionList.getProperty());
+ }
+
+ /**
+ * Given a shorthand expansion list and a <tt>PropertyValueList</tt>,
+ * override the expansion list elements corresponding to the elements
+ * of the <tt>PropertyValueList</tt>.
+ * Correspondence is based on the <em>property</em> field of the
+ * <tt>PropertyValue</tt>.
+ * @param expansionList the expansion <tt>PropertyValueList</tt>
+ * @param list the overriding <tt>PropertyValueList</tt>
+ * @return <tt>PropertyValueList</tt> the new expansion list with
+ * appropriate elements reset
+ * @exception <tt>PropertyException</tt>
+ */
+ public static PropertyValueList overrideSHandElements
+ (PropertyValueList expansionList, PropertyValueList list)
+ throws PropertyException
+ {
+ // From the overriding list, form an array of PropertyValue references
+ // an array of property indices and an array of booleans,
+ int listsize = list.size();
+ Object[] listrefs = new Object[listsize];
+ int[] listprops = new int[listsize];
+ boolean[] propseen = new boolean[listsize];
+ Iterator listels = list.iterator();
+ int i = 0;
+ while (listels.hasNext()) {
+ listrefs[i] = listels.next();
+ listprops[i] = ((PropertyValue)listrefs[i]).getProperty();
+ i++;
+ }
+
+ ListIterator elements = expansionList.listIterator();
+ while (elements.hasNext()) {
+ PropertyValue next = (PropertyValue)(elements.next());
+ int expprop = next.getProperty();
+ for (i = 0; i < listsize; i++) {
+ if (expprop != listprops[i]) continue;
+ elements.set(listrefs[i]);
+ propseen[i] = true;
+ }
+ }
+ // Check for unmatched override elements
+ String unmatched = "";
+ boolean someunmatched = false;
+ for (i = 0; i < listsize; i++) {
+ if ( ! propseen[i]) {
+ someunmatched = true;
+ unmatched = unmatched + " " +
+ PropNames.getPropertyName(listprops[i]);
+ }
+ }
+ if (someunmatched)
+ throw new PropertyException
+ ("Unmatched properties:" + unmatched +
+ " : in expansion list for " + expansionList.getProperty());
+ return expansionList;
}
private PropertySets (){}
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-cvs-help@xml.apache.org