]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
1.) Validation for fo:multi-toggle added.
authorGlen Mazza <gmazza@apache.org>
Sat, 4 Sep 2004 20:55:21 +0000 (20:55 +0000)
committerGlen Mazza <gmazza@apache.org>
Sat, 4 Sep 2004 20:55:21 +0000 (20:55 +0000)
2.) Switch to faster int's for findAncestor().

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197902 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/fo/FONode.java
src/java/org/apache/fop/fo/FObj.java
src/java/org/apache/fop/fo/flow/BidiOverride.java
src/java/org/apache/fop/fo/flow/Inline.java

index 64c1f199d2f9b0f2a60a90139465e62bcb5c206c..e1bfe272eaa236ef78efaa0bcf838262e692e805 100644 (file)
@@ -110,23 +110,6 @@ public abstract class FONode {
         System.out.println("name = " + elementName);
     }
 
-    /**
-     * Returns the name of the node
-     * @return the name of this node
-     */
-    public String getName() {
-        return null;
-    }
-
-    /**
-     * Returns the Constants class integer value of this node
-     * @return the integer enumeration of this FO (e.g., FO_ROOT)
-     *      if a formatting object, FO_UNKNOWN_NODE otherwise
-     */
-    public int getNameId() {
-        return Constants.FO_UNKNOWN_NODE;
-    }
-
     /**
      * Checks to make sure, during SAX processing of input document, that the
      * incoming node is valid for the this (parent) node (e.g., checking to
@@ -344,5 +327,22 @@ public abstract class FONode {
             return "Error(" + loc.getLineNumber() + "/" + loc.getColumnNumber() + "): ";
         }
     }
+
+    /**
+     * Returns the name of the node
+     * @return the name of this node
+     */
+    public String getName() {
+        return null;
+    }
+
+    /**
+     * Returns the Constants class integer value of this node
+     * @return the integer enumeration of this FO (e.g., FO_ROOT)
+     *      if a formatting object, FO_UNKNOWN_NODE otherwise
+     */
+    public int getNameId() {
+        return Constants.FO_UNKNOWN_NODE;
+    }
 }
 
index a1a25e8b7f73bf5dc7a58b9156a746ba6272cff2..cebe2e164ff34f0530ad7845ace78da1375e8765 100644 (file)
@@ -514,8 +514,9 @@ public class FObj extends FONode implements Constants {
             || lName.equals("page-number") 
             || lName.equals("page-number-citation")
             || lName.equals("basic-link")
-            || lName.equals("multi-toggle")
-            || (!isOutOfLineFODescendant && lName.equals("footnote"))
+            || (lName.equals("multi-toggle")
+                && (getNameId() == FO_MULTI_CASE || findAncestor(FO_MULTI_CASE) > 0))
+            || (lName.equals("footnote") && !isOutOfLineFODescendant)
             || isNeutralItem(nsURI, lName)));
     }
 
@@ -551,15 +552,15 @@ public class FObj extends FONode implements Constants {
     /**
      * Convenience method for validity checking.  Checks if the
      * current node has an ancestor of a given name.
-     * @param ancestorName -- node name to check for (e.g., "fo:root")
+     * @param ancestorID -- Constants ID of node name to check for (e.g., FO_ROOT)
      * @return number of levels above FO where ancestor exists, 
      *    -1 if not found
      */
-    protected int findAncestor(String ancestorName) {
+    protected int findAncestor(int ancestorID) {
         int found = 1;
         FONode temp = getParent();
         while (temp != null) {
-            if (temp.getName().equals(ancestorName)) {
+            if (temp.getNameId() == ancestorID) {
                 return found;
             }
             found += 1;
index 0e97b6d836c05d939d9586ffc6ce72466a9a9074..48874bf1cccca753e0a4900073063f876ce55e89 100644 (file)
@@ -52,10 +52,10 @@ public class BidiOverride extends FObjMixed {
        /* Check to see if this node can have block-level children.
         * See validateChildNode() below.
         */
-       int lvlLeader = findAncestor("fo:leader");
-       int lvlInCntr = findAncestor("fo:inline-container");
-       int lvlInline = findAncestor("fo:inline");
-       int lvlFootnote = findAncestor("fo:footnote");
+       int lvlLeader = findAncestor(FO_LEADER);
+       int lvlInCntr = findAncestor(FO_INLINE_CONTAINER);
+       int lvlInline = findAncestor(FO_INLINE);
+       int lvlFootnote = findAncestor(FO_FOOTNOTE);
 
        if (lvlLeader > 0) {
            if (lvlInCntr < 0 ||
index 5df8b757306f20a3df95d65e0983ffec9069eb41..33605498fc53e0f21ccd7c5d09c790e1dc6dfbe8 100644 (file)
@@ -54,9 +54,9 @@ public class Inline extends FObjMixed {
        /* Check to see if this node can have block-level children.
         * See validateChildNode() below.
         */
-       int lvlLeader = findAncestor("fo:leader");
-       int lvlFootnote = findAncestor("fo:footnote");
-       int lvlInCntr = findAncestor("fo:inline-container");
+       int lvlLeader = findAncestor(FO_LEADER);
+       int lvlFootnote = findAncestor(FO_FOOTNOTE);
+       int lvlInCntr = findAncestor(FO_INLINE_CONTAINER);
 
        if (lvlLeader > 0) {
            if (lvlInCntr < 0 ||