pbwest 2002/10/30 06:35:11
Modified: src/org/apache/fop/fo Tag: FOP_0-20-0_Alt-Design FoRoot.java
Log:
Added support for sparsePropsSet.
Use foType in get/expect calls. getEndElement for fo:layout-master-set.
Revision Changes Path
No revision
No revision
1.1.2.12 +44 -13 xml-fop/src/org/apache/fop/fo/Attic/FoRoot.java
Index: FoRoot.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/Attic/FoRoot.java,v
retrieving revision 1.1.2.11
retrieving revision 1.1.2.12
diff -u -r1.1.2.11 -r1.1.2.12
--- FoRoot.java 24 Oct 2002 14:53:46 -0000 1.1.2.11
+++ FoRoot.java 30 Oct 2002 14:35:11 -0000 1.1.2.12
@@ -14,6 +14,7 @@
import org.apache.fop.fo.FOPropertySets;
import org.apache.fop.fo.FObjectNames;
import org.apache.fop.datastructs.Tree;
+import org.apache.fop.datatypes.Ints;
import org.apache.fop.fo.FOTree;
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.expr.PropertyException;
@@ -25,6 +26,7 @@
import org.xml.sax.Attributes;
+import java.util.HashMap;
import java.util.NoSuchElementException;
/**
@@ -43,6 +45,32 @@
private FoLayoutMasterSet layoutMasters;
+ /** Map of <tt>Integer</tt> indices of <i>sparsePropsSet</i> array.
+ It is indexed by the FO index of the FO associated with a given
+ position in the <i>sparsePropsSet</i> array. See
+ {@link org.apache.fop.fo.FONode#sparsePropsSet FONode.sparsePropsSet}.
+ */
+ private static final HashMap sparsePropsMap;
+
+ /** An <tt>int</tt> array of of the applicable property indices, in
+ property index order. */
+ private static final int[] sparseIndices;
+
+ /** The number of applicable properties. This is the size of the
+ <i>sparsePropsSet</i> array. */
+ private static final int numProps;
+
+ static {
+ // applicableProps is a HashMap containing the indicies of the
+ // sparsePropsSet array, indexed by the FO index of the FO slot
+ // in sparsePropsSet.
+ sparsePropsMap = new HashMap(1);
+ numProps = 1;
+ sparseIndices = new int[] { PropNames.MEDIA_USAGE };
+ sparsePropsMap.put
+ (Ints.consts.get(PropNames.MEDIA_USAGE), Ints.consts.get(0));
+ }
+
/**
* @param foTree the FO tree being built
* @param event the <tt>FoXMLEvent</tt> that triggered the creation of this
@@ -53,7 +81,8 @@
throws Tree.TreeException, FOPException, PropertyException
{
// This is the root node of the tree; hence the null argument
- super(foTree, FObjectNames.ROOT, null, event, FOPropertySets.ROOT_SET);
+ super(foTree, FObjectNames.ROOT, null, event, FOPropertySets.ROOT_SET,
+ sparsePropsMap, sparseIndices, numProps);
}
/**
@@ -82,18 +111,20 @@
*/
public void buildFoTree() throws FOPException{
FoXMLEvent ev;
- System.out.println("buildFoTree: " + event);
+ //System.out.println("buildFoTree: " + event);
// Look for layout-master-set
try {
ev = xmlevents.expectStartElement
- (XMLNamespaces.XSLNSpaceIndex, "layout-master-set",
- XMLEvent.DISCARD_W_SPACE);
+ (FObjectNames.LAYOUT_MASTER_SET, XMLEvent.DISCARD_W_SPACE);
} catch (NoSuchElementException e) {
- throw new FOPException("buildFoTree: Unexpected EOF in
layout-master-set.");
+ throw new FOPException
+ ("buildFoTree: Unexpected EOF in layout-master-set.");
}
// Process the layout-master-set
try {
layoutMasters = new FoLayoutMasterSet(foTree, this, ev);
+ // Clean up the fo:layout-master-set event
+ xmlevents.getEndElement(ev);
} catch(Tree.TreeException e) {
throw new FOPException("TreeException: " + e.getMessage());
} catch(PropertyException e) {
@@ -102,17 +133,17 @@
// Look for optional declarations
try {
ev = xmlevents.expectStartElement
- (XMLNamespaces.XSLNSpaceIndex, "declarations",
- XMLEvent.DISCARD_W_SPACE);
+ (FObjectNames.DECLARATIONS, XMLEvent.DISCARD_W_SPACE);
if (ev != null) {
// process the declarations
- xmlevents.getEndElement
- (XMLNamespaces.XSLNSpaceIndex, "declarations");
+ xmlevents.getEndElement(FObjectNames.DECLARATIONS);
}
} catch (NoSuchElementException e) {
throw new FOPException
("Unexpected EOF while processing declarations.");
}
-
+ // Process page-sequences here
+ // Clean up root's FO tree build environment
+ makeSparsePropsSet();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]