]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Javadoc for the table layout code
authorVincent Hennebert <vhennebert@apache.org>
Thu, 8 Feb 2007 16:55:11 +0000 (16:55 +0000)
committerVincent Hennebert <vhennebert@apache.org>
Thu, 8 Feb 2007 16:55:11 +0000 (16:55 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@504958 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/layoutmgr/table/TableContentLayoutManager.java
src/java/org/apache/fop/layoutmgr/table/TableLayoutManager.java
src/java/org/apache/fop/layoutmgr/table/TableRowIterator.java
src/java/org/apache/fop/layoutmgr/table/TableStepper.java

index 2ab9a1cde8a03b03c44a8cb5fc3580b664112343..64f1ac60570a6657c53170ea853f6f5035de1f94 100644 (file)
@@ -217,7 +217,7 @@ public class TableContentLayoutManager implements PercentBaseContext {
                         KnuthPenalty pen = (KnuthPenalty)last;
                         pen.setP(-KnuthPenalty.INFINITE);
                         pen.setBreakClass(rowFO.getBreakBefore());
-                    } else if (last instanceof BreakElement) {
+                    } else {//if (last instanceof BreakElement) { // TODO vh: seems the only possibility
                         BreakElement breakPoss = (BreakElement) last;
                         breakPoss.setPenaltyValue(-KnuthPenalty.INFINITE);
                         breakPoss.setBreakClass(rowFO.getBreakBefore());
@@ -432,10 +432,11 @@ public class TableContentLayoutManager implements PercentBaseContext {
             
             pgus.clear();
             TableRow tableRow = null;
-            int minContentHeight = 0;
+            int minContentHeight = 0;  // Minimum content height for the row
             int maxCellHeight = 0;
             int effRowContentHeight = 0;
             for (int j = 0; j < row.getGridUnits().size(); j++) {
+//                assert maxColumnCount == 0 || maxColumnCount == row.getGridUnits().size(); // TODO vh
                 maxColumnCount = Math.max(maxColumnCount, row.getGridUnits().size());
                 GridUnit gu = row.getGridUnit(j);
                 if ((gu.isPrimary() || (gu.getColSpanIndex() == 0 && gu.isLastGridUnitRowSpan())) 
index 2e653e23d932a8ae377b5420293b7d8ef4532f92..13b606618720c3c4bded43abb4bc02677a3f2d81 100644 (file)
@@ -144,7 +144,14 @@ public class TableLayoutManager extends BlockStackingLayoutManager
         return halfBorderSeparationIPD;
     }
     
-    /** @see org.apache.fop.layoutmgr.LayoutManager */
+    /**
+     * Handles the Knuth elements at the table level: mainly breaks, spaces and borders
+     * before and after the table. The Knuth elements for the table cells are handled by
+     * TableContentLayoutManager.
+     *
+     * @see org.apache.fop.layoutmgr.LayoutManager
+     * @see TableContentLayoutManager#getNextKnuthElements(LayoutContext, int)
+     */
     public LinkedList getNextKnuthElements(LayoutContext context, int alignment) {
         
         LinkedList returnList = new LinkedList();
@@ -159,8 +166,10 @@ public class TableLayoutManager extends BlockStackingLayoutManager
             }
         }
 
+        /*
+         * Compute the IPD and adjust it if necessary (overconstrained)
+         */
         referenceIPD = context.getRefIPD();
-
         if (getTable().getInlineProgressionDimension().getOptimum(this).getEnum() != EN_AUTO) {
             int contentIPD = getTable().getInlineProgressionDimension().getOptimum(this)
                     .getLength().getValue(this);
@@ -173,7 +182,6 @@ public class TableLayoutManager extends BlockStackingLayoutManager
             }
             updateContentAreaIPDwithOverconstrainedAdjust();
         }
-
         int sumOfColumns = columns.getSumOfColumnWidths(this);
         if (!autoLayout && sumOfColumns > getContentAreaIPD()) {
             log.debug(FONode.decorateWithContextInfo(
@@ -181,7 +189,6 @@ public class TableLayoutManager extends BlockStackingLayoutManager
                     getTable()));
             updateContentAreaIPDwithOverconstrainedAdjust(sumOfColumns);
         }
-
         int availableIPD = referenceIPD - getIPIndents();
         if (getContentAreaIPD() > availableIPD) {
             log.warn(FONode.decorateWithContextInfo(
@@ -210,6 +217,7 @@ public class TableLayoutManager extends BlockStackingLayoutManager
         //Spaces, border and padding to be repeated at each break
         addPendingMarks(context);
 
+        // Elements for the table-header/footer/body
         LinkedList contentKnuthElements = null;
         LinkedList contentList = new LinkedList();
         //Position returnPosition = new NonLeafPosition(this, null);
@@ -537,4 +545,4 @@ public class TableLayoutManager extends BlockStackingLayoutManager
         }
     }
 
-}
\ No newline at end of file
+}
index 2fc91cb4b04989caab8b1aad6051cfd9cd73e4aa..6cd7f0f8f287fb35e743272434c37de57d5c2dd3 100644 (file)
@@ -77,7 +77,7 @@ public class TableRowIterator {
 
     //TODO rows should later be a Jakarta Commons LinkedList so concurrent modifications while
     //using a ListIterator are possible
-    /** List of cached rows. This a list of EffRow elements. */
+    /** List of cached rows. This is a list of EffRow elements. */
     private List fetchedRows = new java.util.ArrayList();
 
     /**
index 6763f8b082f6c05a3917fb31f862fe9b23443921..b8e34ba63d6d37d1e076d4773f4749b7eb2eed30 100644 (file)
@@ -51,10 +51,25 @@ public class TableStepper {
     private EffRow[] rowGroup;
     private int totalHeight;
     private int activeRow;
+    /**
+     * Knuth elements for active cells, per column. Active cells are cells spanning over
+     * the currently active row.
+     */
     private List[] elementLists;
     private int[] startRow;
+    /**
+     * For each column, index, in the cell's list of Knuth elements, of the element
+     * starting the current row.
+     */
     private int[] start;
+    /**
+     * For each column, index, in the cell's list of Knuth elements, of the element
+     * ending the current row.
+     */
     private int[] end;
+    /**
+     * For each column, widths of the Knuth elements which will be on the current row. 
+     */
     private int[] widths;
     private int[] baseWidth;
     private int[] borderBefore;
@@ -105,10 +120,22 @@ public class TableStepper {
         return false;
     }
     
+    /**
+     * Returns the row currently being processed.
+     *
+     * @return the row currently being processed
+     */
     private EffRow getActiveRow() {
         return rowGroup[activeRow];
     }
     
+    /**
+     * Returns the grid unit at the given column number on the active row.
+     *
+     * @param column column number of the grid unit to get
+     * @return the corresponding grid unit (may be null)
+     * @see TableStepper#getActiveRow
+     */
     private GridUnit getActiveGridUnit(int column) {
         return getActiveRow().safelyGetGridUnit(column);
     }
@@ -200,7 +227,7 @@ public class TableStepper {
                 if (height == 0) {
                     height = row.getHeight().opt;
                 }
-                list.add(new KnuthBoxCellWithBPD(height, pgu));
+                list.add(new KnuthBoxCellWithBPD(height));
                 elementLists[column] = list;
             } else {
                 //Copy elements (LinkedList) to array lists to improve 
@@ -234,7 +261,7 @@ public class TableStepper {
      * @param context Active LayoutContext
      * @param rowGroup the row group
      * @param maxColumnCount the maximum number of columns to expect
-     * @param bodyType Indicates what type of body is processed (boder, header or footer)
+     * @param bodyType Indicates what type of body is processed (body, header or footer)
      * @return the combined element list
      */
     public LinkedList getCombinedKnuthElementsForRowGroup(
@@ -599,13 +626,13 @@ public class TableStepper {
         return this.tclm.getTableLM();
     }
 
+    /**
+     * Marker class denoting table cells fitting in just one box (no legal break inside).
+     */
     private class KnuthBoxCellWithBPD extends KnuthBox {
         
-        private PrimaryGridUnit pgu;
-        
-        public KnuthBoxCellWithBPD(int w, PrimaryGridUnit pgu) {
+        public KnuthBoxCellWithBPD(int w) {
             super(w, null, true);
-            this.pgu = pgu;
         }
     }