You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by je...@apache.org on 2006/01/04 20:30:31 UTC

svn commit: r365971 - in /xmlgraphics/fop/trunk: src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java test/layoutengine/standard-testcases/block_space-before_space-after_bug38102.xml

Author: jeremias
Date: Wed Jan  4 11:30:24 2006
New Revision: 365971

URL: http://svn.apache.org/viewcvs?rev=365971&view=rev
Log:
Bugzilla #38102:
Bugfix: Space was not adjusted if the space was on a nested block inside an auto-height block-container. This could lead to content overflowing the bottom of a page.

Note: Tables and lists currently don't offer space adjustments due to the current limits of the element list combination process. Once the stretch/shrink components are handled during element list combination, this will have to be rechecked.

Modified:
    xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java
    xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_space-before_space-after_bug38102.xml

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java?rev=365971&r1=365970&r2=365971&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java Wed Jan  4 11:30:24 2006
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2005 The Apache Software Foundation.
+ * Copyright 1999-2006 The Apache Software Foundation.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -675,6 +675,7 @@
         LayoutManager childLM = null;
         LayoutManager lastLM = null;
         LayoutContext lc = new LayoutContext(0);
+        lc.setSpaceAdjust(layoutContext.getSpaceAdjust());
         // set space after in the LayoutContext for children
         if (layoutContext.getSpaceAfter() > 0) {
             lc.setSpaceAfter(layoutContext.getSpaceAfter());

Modified: xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_space-before_space-after_bug38102.xml
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_space-before_space-after_bug38102.xml?rev=365971&r1=365970&r2=365971&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_space-before_space-after_bug38102.xml (original)
+++ xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/block_space-before_space-after_bug38102.xml Wed Jan  4 11:30:24 2006
@@ -30,7 +30,7 @@
           <fo:region-body/>
         </fo:simple-page-master>
       </fo:layout-master-set>
-      <fo:page-sequence master-reference="normal">
+      <fo:page-sequence master-reference="normal" id="block">
         <fo:flow flow-name="xsl-region-body">
           <fo:block>
             <fo:block>line1</fo:block>
@@ -38,14 +38,78 @@
             <fo:block space-before.optimum="16pt">line3</fo:block>
             <fo:block>line4</fo:block>
             <fo:block>line5</fo:block>
-          <fo:block>line6</fo:block>
+            <fo:block>line6</fo:block>
           </fo:block>
         </fo:flow>
       </fo:page-sequence>
+      <fo:page-sequence master-reference="normal" id="b-c-1">
+        <fo:flow flow-name="xsl-region-body">
+          <fo:block-container>
+            <fo:block>line1</fo:block>
+            <fo:block space-before="16pt">line2</fo:block>
+            <fo:block space-before.optimum="16pt">line3</fo:block>
+            <fo:block>line4</fo:block>
+            <fo:block>line5</fo:block>
+            <fo:block>line6</fo:block>
+          </fo:block-container>
+        </fo:flow>
+      </fo:page-sequence>
+      <fo:page-sequence master-reference="normal" id="b-c-2">
+        <fo:flow flow-name="xsl-region-body">
+          <fo:block-container height="1.5in">
+            <fo:block>line1</fo:block>
+            <fo:block space-before="16pt">line2</fo:block>
+            <fo:block space-before.optimum="16pt">line3</fo:block>
+            <fo:block>line4</fo:block>
+            <fo:block>line5</fo:block>
+            <fo:block>line6</fo:block>
+          </fo:block-container>
+        </fo:flow>
+      </fo:page-sequence>
+      <!-- Spaces inside tables don't get adjusted. The element list combination process is not that advanced, yet.
+      <fo:page-sequence master-reference="normal" id="table">
+        <fo:flow flow-name="xsl-region-body">
+          <fo:table table-layout="fixed" width="100%">
+            <fo:table-column column-width="100%"/>
+            <fo:table-body>
+              <fo:table-row>
+                <fo:table-cell>
+                  <fo:block>line1</fo:block>
+                  <fo:block space-before="16pt">line2</fo:block>
+                  <fo:block space-before.optimum="16pt">line3</fo:block>
+                  <fo:block>line4</fo:block>
+                  <fo:block>line5</fo:block>
+                  <fo:block>line6</fo:block>
+                </fo:table-cell>
+              </fo:table-row>
+            </fo:table-body>
+          </fo:table>
+        </fo:flow>
+      </fo:page-sequence-->
+      <!-- The same applies to lists, too.
+      <fo:page-sequence master-reference="normal" id="list">
+        <fo:flow flow-name="xsl-region-body">
+          <fo:list-block>
+            <fo:list-item>
+              <fo:list-item-label>
+                <fo:block/>
+              </fo:list-item-label>
+              <fo:list-item-body>
+                <fo:block>line1</fo:block>
+                <fo:block space-before="16pt">line2</fo:block>
+                <fo:block space-before.optimum="16pt">line3</fo:block>
+                <fo:block>line4</fo:block>
+                <fo:block>line5</fo:block>
+                <fo:block>line6</fo:block>
+              </fo:list-item-body>
+            </fo:list-item>
+          </fo:list-block>
+        </fo:flow>
+      </fo:page-sequence-->
     </fo:root>
   </fo>
   <checks>
-    <element-list category="breaker">
+    <element-list category="breaker" id="block">
       <box w="14400"/>
       
       <penalty w="0" p="0"/>
@@ -67,10 +131,26 @@
       
       <skip>3</skip>
     </element-list>
-    <eval expected="1" xpath="count(//pageViewport)"/>
-    <eval expected="16000" xpath="//flow/block[1]/block[2]/@space-before"/>
+    
+    <!-- page-sequence 1 with fo:block -->
+    <eval expected="1" xpath="count(//pageSequence[1]//pageViewport)"/>
+    <eval expected="16000" xpath="//pageSequence[1]//flow/block[1]/block[2]/@space-before"/>
+    <!-- The breaker needs to shrink the optimal 1600mpt to 5600mpt to fit everything into the one page -->
+    <eval expected="5600" xpath="//pageSequence[1]//flow/block[1]/block[3]/@space-before"/>
+    <true xpath="//pageSequence[1]//flow/@bpd = //pageSequence[1]//regionBody/@bpd"/>
+
+    <!-- page-sequence 2 with fo:block-container (auto-height)-->
+    <eval expected="1" xpath="count(//pageSequence[2]//pageViewport)"/>
+    <eval expected="16000" xpath="//pageSequence[2]//flow/block[1]/block[1]/block[2]/@space-before"/>
+    <!-- The breaker needs to shrink the optimal 1600mpt to 5600mpt to fit everything into the one page -->
+    <eval expected="5600" xpath="//pageSequence[2]//flow/block[1]/block[1]/block[3]/@space-before"/>
+    <true xpath="//pageSequence[2]//flow/@bpd = //pageSequence[2]//regionBody/@bpd"/>
+
+    <!-- page-sequence 3 with fo:block-container (fixed height)-->
+    <eval expected="1" xpath="count(//pageSequence[3]//pageViewport)"/>
+    <eval expected="16000" xpath="//pageSequence[3]//flow/block[1]/block[1]/block[2]/@space-before"/>
     <!-- The breaker needs to shrink the optimal 1600mpt to 5600mpt to fit everything into the one page -->
-    <eval expected="5600" xpath="//flow/block[1]/block[3]/@space-before"/>
-    <true xpath="//flow/@bpd = //regionBody/@bpd"/>
+    <eval expected="5600" xpath="//pageSequence[3]//flow/block[1]/block[1]/block[3]/@space-before"/>
+    <true xpath="//pageSequence[3]//flow/@bpd = //pageSequence[3]//regionBody/@bpd"/>
   </checks>
 </testcase>



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org