]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Send the ID of the producing FO to the area tree as trait where possible.
authorJeremias Maerki <jeremias@apache.org>
Tue, 26 Jul 2005 10:01:41 +0000 (10:01 +0000)
committerJeremias Maerki <jeremias@apache.org>
Tue, 26 Jul 2005 10:01:41 +0000 (10:01 +0000)
This is useful for testing and may later be interesting for FO editor implementors and for other things where you want to identify the generating FO from a particular object in the output.

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

src/java/org/apache/fop/area/Trait.java
src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java
src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java
src/java/org/apache/fop/layoutmgr/TraitSetter.java
src/java/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java
src/java/org/apache/fop/layoutmgr/list/ListItemContentLayoutManager.java
src/java/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java
src/java/org/apache/fop/layoutmgr/table/TableCellLayoutManager.java
src/java/org/apache/fop/layoutmgr/table/TableLayoutManager.java

index 326502e7b1fd7c55b7d5b3d27c079479ad492351..fa44ebe4d359717feb05c0dee97c4a3d56a8796a 100644 (file)
@@ -66,9 +66,9 @@ public class Trait implements Serializable {
     public static final Integer COLOR = new Integer(7);
 
     /**
-     * Don't think this is necessary.
+     * The ID of the FO that produced an area.
      */
-    public static final Integer ID_AREA = new Integer(8);
+    public static final Integer PROD_ID = new Integer(8);
 
     /**
      * Background trait for an area.
@@ -224,7 +224,7 @@ public class Trait implements Serializable {
         TRAIT_INFO.put(FONT_SIZE,
                           new TraitInfo("font-size", Integer.class));
         TRAIT_INFO.put(COLOR, new TraitInfo("color", String.class));
-        TRAIT_INFO.put(ID_AREA, new TraitInfo("id-area", String.class));
+        TRAIT_INFO.put(PROD_ID, new TraitInfo("prod-id", String.class));
         TRAIT_INFO.put(BACKGROUND,
                           new TraitInfo("background", Background.class));
         TRAIT_INFO.put(UNDERLINE,
index 001fdfbb65abcb1a27d67e7d15b0c96230b00d04..440c1b97ef368bb28109e8cd876053eb6568dfb7 100644 (file)
@@ -771,6 +771,7 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager {
                 viewportBlockArea.setBPD(vpContentBPD);
             }
 
+            TraitSetter.setProducerID(viewportBlockArea, getBlockContainerFO().getId());
             TraitSetter.addBorders(viewportBlockArea, 
                     getBlockContainerFO().getCommonBorderPaddingBackground());
             TraitSetter.addBackground(viewportBlockArea, 
@@ -800,6 +801,7 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager {
 
             referenceArea = new Block();
             referenceArea.addTrait(Trait.IS_REFERENCE_AREA, Boolean.TRUE);
+            TraitSetter.setProducerID(referenceArea, getBlockContainerFO().getId());
 
             if (abProps.absolutePosition == EN_ABSOLUTE) {
                 viewportBlockArea.setPositioning(Block.ABSOLUTE);
index 46dbf14072ae9b209bfe7161e9f4753af368f0f9..83be99b71528d4ad020ccf2aa3ab27c17899fb08 100644 (file)
@@ -402,6 +402,7 @@ public class BlockLayoutManager extends BlockStackingLayoutManager {
             /*Area parentArea =*/ parentLM.getParentArea(curBlockArea);
 
             // set traits
+            TraitSetter.setProducerID(curBlockArea, getBlockFO().getId());
             TraitSetter.addBorders(curBlockArea, 
                     getBlockFO().getCommonBorderPaddingBackground());
             TraitSetter.addBackground(curBlockArea, 
index 24ace2733650acdc11a5cc43014b99130d193810..d165939143c4e0a0cc941a9d8501676673641402 100644 (file)
@@ -348,4 +348,16 @@ public class TraitSetter {
             }
         }
     }
+    
+    /**
+     * Sets the producer's ID as a trait on the area. This can be used to track back the 
+     * generating FO node.
+     * @param area the area to set the traits on
+     * @param id the ID to set
+     */
+    public static void setProducerID(Area area, String id) {
+        if (id != null && id.length() > 0) {
+            area.addTrait(Trait.PROD_ID, id);
+        }
+    }
 }
index 78b1e40e9b1627fbeb8e25e1d85817ccab783530..8536c062ed947713f3e6cce981897bf9441653dc 100644 (file)
@@ -204,6 +204,7 @@ public class ListBlockLayoutManager extends BlockStackingLayoutManager {
             /*Area parentArea =*/ parentLM.getParentArea(curBlockArea);
 
             // set traits
+            TraitSetter.setProducerID(curBlockArea, getListBlockFO().getId());
             TraitSetter.addBorders(curBlockArea, 
                     getListBlockFO().getCommonBorderPaddingBackground());
             TraitSetter.addBackground(curBlockArea, 
index 9fcb8d6c9b0f3312dc2139b91fa15c264d20ca92..d86d06b3112aa8b6581c38db452b2ce91c338cfb 100644 (file)
@@ -28,6 +28,7 @@ import org.apache.fop.layoutmgr.LayoutContext;
 import org.apache.fop.layoutmgr.PositionIterator;
 import org.apache.fop.layoutmgr.Position;
 import org.apache.fop.layoutmgr.NonLeafPosition;
+import org.apache.fop.layoutmgr.TraitSetter;
 import org.apache.fop.area.Area;
 import org.apache.fop.area.Block;
 
@@ -189,6 +190,8 @@ public class ListItemContentLayoutManager extends BlockStackingLayoutManager {
             curBlockArea.setIPD(itemIPD);
             //curBlockArea.setHeight();
 
+            TraitSetter.setProducerID(curBlockArea, getPartFO().getId());
+            
             // Set up dimensions
             Area parentArea = parentLM.getParentArea(curBlockArea);
             int referenceIPD = parentArea.getIPD();
index 76a193d70cb736222cf1dbd96eabe06c03094dbe..7092078cc6d817c9b0fee369a50e4fbbabb81dfa 100644 (file)
@@ -541,6 +541,7 @@ public class ListItemLayoutManager extends BlockStackingLayoutManager {
             /*Area parentArea =*/ parentLM.getParentArea(curBlockArea);
             
             // set traits
+            TraitSetter.setProducerID(curBlockArea, getListItemFO().getId());
             TraitSetter.addBorders(curBlockArea, 
                     getListItemFO().getCommonBorderPaddingBackground());
             TraitSetter.addBackground(curBlockArea, 
index 210b55227c8aca1983eeb93aa961962b769729f8..6a01facc5b2383bdec772f178f226be907dd2f99 100644 (file)
@@ -424,6 +424,7 @@ public class TableCellLayoutManager extends BlockStackingLayoutManager implement
         if (curBlockArea == null) {
             curBlockArea = new Block();
             curBlockArea.addTrait(Trait.IS_REFERENCE_AREA, Boolean.TRUE);
+            TraitSetter.setProducerID(curBlockArea, fobj.getId());
             curBlockArea.setPositioning(Block.ABSOLUTE);
             int indent = 0;
             indent += startBorderWidth;
index cdb1ea781ec9da3039ba9236ed287b417ffe7e9c..31c684639365636897ee8e1ce50db565a3c501ae 100644 (file)
@@ -28,8 +28,6 @@ import org.apache.fop.layoutmgr.BlockStackingLayoutManager;
 import org.apache.fop.layoutmgr.KnuthElement;
 import org.apache.fop.layoutmgr.KnuthGlue;
 import org.apache.fop.layoutmgr.KnuthPenalty;
-import org.apache.fop.layoutmgr.LayoutManager;
-import org.apache.fop.layoutmgr.LeafPosition;
 import org.apache.fop.layoutmgr.LayoutContext;
 import org.apache.fop.layoutmgr.PositionIterator;
 import org.apache.fop.layoutmgr.Position;
@@ -41,7 +39,6 @@ import org.apache.fop.traits.SpaceVal;
 
 import java.util.Iterator;
 import java.util.LinkedList;
-import java.util.List;
 
 /**
  * LayoutManager for a table FO.
@@ -68,14 +65,6 @@ public class TableLayoutManager extends BlockStackingLayoutManager
     private MinOptMax spaceAfter;
     
     
-    private class SectionPosition extends LeafPosition {
-        protected List list;
-        protected SectionPosition(LayoutManager lm, int pos, List l) {
-            super(lm, pos);
-            list = l;
-        }
-    }
-
     /**
      * Create a new table layout manager.
      * @param node the table FO
@@ -347,6 +336,8 @@ public class TableLayoutManager extends BlockStackingLayoutManager
             // Must get dimensions from parent area
             /*Area parentArea =*/ parentLM.getParentArea(curBlockArea);
             
+            TraitSetter.setProducerID(curBlockArea, getTable().getId());
+
             int contentIPD = referenceIPD - getIPIndents();
             curBlockArea.setIPD(contentIPD);