Author: vhennebert
Date: Tue Jul 21 15:31:56 2009
New Revision: 796350

URL: http://svn.apache.org/viewvc?rev=796350&view=rev
Log:
Moved the IPD-change-related getNextKnuthElements method to the LayoutManager 
interface.

Modified:
    
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/AbstractBaseLayoutManager.java
    
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java
    
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java
    
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java
    
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/LayoutManager.java

Modified: 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/AbstractBaseLayoutManager.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/AbstractBaseLayoutManager.java?rev=796350&r1=796349&r2=796350&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/AbstractBaseLayoutManager.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/AbstractBaseLayoutManager.java
 Tue Jul 21 15:31:56 2009
@@ -19,6 +19,9 @@
 
 package org.apache.fop.layoutmgr;
 
+import java.util.List;
+import java.util.Stack;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -264,4 +267,10 @@
         return false;
     }
 
+    /** {...@inheritdoc} */
+    public List getNextKnuthElements(LayoutContext context, int alignment, 
Stack lmStack,
+            Position positionAtIPDChange, LayoutManager restartAtLM) {
+        throw new UnsupportedOperationException("Not implemented");
+    }
+
 }

Modified: 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java?rev=796350&r1=796349&r2=796350&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java
 Tue Jul 21 15:31:56 2009
@@ -116,7 +116,7 @@
     }
 
     /** {...@inheritdoc} */
-    List getNextKnuthElements(LayoutContext context, int alignment, Stack 
lmStack,
+    public List getNextKnuthElements(LayoutContext context, int alignment, 
Stack lmStack,
             Position restartPosition, LayoutManager restartAtLM) {
         resetSpaces();
         if (lmStack == null) {

Modified: 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java?rev=796350&r1=796349&r2=796350&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/BlockStackingLayoutManager.java
 Tue Jul 21 15:31:56 2009
@@ -358,7 +358,7 @@
     }
 
     /** {...@inheritdoc} */
-    List getNextKnuthElements(LayoutContext context, int alignment, Stack 
lmStack,
+    public List getNextKnuthElements(LayoutContext context, int alignment, 
Stack lmStack,
             Position restartPosition, LayoutManager restartAtLM) {
         referenceIPD = context.getRefIPD();
         updateContentAreaIPDwithOverconstrainedAdjust();

Modified: 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java?rev=796350&r1=796349&r2=796350&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java
 Tue Jul 21 15:31:56 2009
@@ -104,13 +104,9 @@
                 currentChildLM = currentChildLM.getParent();
             }
             setCurrentChildLM(currentChildLM);
-            if (!(currentChildLM instanceof BlockLayoutManager)) {
-                throw new UnsupportedOperationException("TODO: layout manager 
not restartable");
-            } else {
-                if (addChildElements(elements, currentChildLM, context, 
alignment, lmStack,
-                        positionAtIPDChange, restartAtLM) != null) {
-                    return elements;
-                }
+            if (addChildElements(elements, currentChildLM, context, alignment, 
lmStack,
+                    positionAtIPDChange, restartAtLM) != null) {
+                return elements;
             }
         }
 
@@ -192,7 +188,8 @@
     }
 
     private List getNextChildElements(LayoutManager childLM, LayoutContext 
context,
-            LayoutContext childLC, int alignment, Stack lmStack, Position 
restartPosition, LayoutManager restartLM) {
+            LayoutContext childLC, int alignment, Stack lmStack, Position 
restartPosition,
+            LayoutManager restartLM) {
         childLC.setStackLimitBP(context.getStackLimitBP());
         childLC.setRefIPD(context.getRefIPD());
         
childLC.setWritingMode(getCurrentPage().getSimplePageMaster().getWritingMode());
@@ -201,7 +198,7 @@
         if (lmStack == null) {
             childrenElements = childLM.getNextKnuthElements(childLC, 
alignment);
         } else {
-            childrenElements = ((BlockLayoutManager) 
childLM).getNextKnuthElements(childLC,
+            childrenElements = childLM.getNextKnuthElements(childLC,
                     alignment, lmStack, restartPosition, restartLM);
         }
         assert !childrenElements.isEmpty();

Modified: 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/LayoutManager.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/LayoutManager.java?rev=796350&r1=796349&r2=796350&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/LayoutManager.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/LayoutManager.java
 Tue Jul 21 15:31:56 2009
@@ -20,6 +20,7 @@
 package org.apache.fop.layoutmgr;
 
 import java.util.List;
+import java.util.Stack;
 
 import org.apache.fop.area.Area;
 import org.apache.fop.datatypes.PercentBaseContext;
@@ -234,4 +235,21 @@
      * change
      */
     boolean isRestartable();
+
+    /**
+     * Returns an updated list of Knuth elements corresponding to this layout
+     * manager, after a change of IPD has been detected.
+     *
+     * @param context the layout context
+     * @param alignment the alignment
+     * @param lmStack the stack of LMs that are active at the IPD change
+     * @param positionAtIPDChange the position corresponding to the element
+     * finishing the page before the IPD change
+     * @param restartAtLM if not null, the layout manager from which to 
restart.
+     * That is, the IPD change occurs between two block elements and not inside
+     * a paragraph
+     * @return an updated list of elements, taking the new IPD into account
+     */
+    List getNextKnuthElements(LayoutContext context, int alignment, Stack 
lmStack,
+            Position positionAtIPDChange, LayoutManager restartAtLM);
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to