]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Fixed an IllegalArgumentException for absolutely positioned block-containers with...
authorJeremias Maerki <jeremias@apache.org>
Mon, 12 Mar 2007 21:49:37 +0000 (21:49 +0000)
committerJeremias Maerki <jeremias@apache.org>
Mon, 12 Mar 2007 21:49:37 +0000 (21:49 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@517415 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java
status.xml
test/layoutengine/standard-testcases/block-container_absolute-position_no-height.xml

index e99b966ef13b488590a3cd465b1054e0382b5800..e63345f771bb7ca072cca953c24e6d72cc28a654 100644 (file)
@@ -431,6 +431,8 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager
                     }
                 }
             } else {
+                int maxbpd = context.getStackLimit().opt;
+                allocBPD = maxbpd;
                 autoHeight = true;
             }
         } else {
@@ -503,7 +505,7 @@ public class BlockContainerLayoutManager extends BlockStackingLayoutManager
 
         MinOptMax range = new MinOptMax(relDims.ipd);
         BlockContainerBreaker breaker = new BlockContainerBreaker(this, range);
-        breaker.doLayout(relDims.bpd, autoHeight);
+        breaker.doLayout((autoHeight ? 0 : relDims.bpd), autoHeight);
         boolean contentOverflows = breaker.isOverflow();
         LinkedList returnList = new LinkedList();
         if (!breaker.isEmpty()) {
index 9e40ad4fd2c0143f56fc9b20eba31036188bbe74..2c662ef1f8fb6078c86a3fc34d2ad886bd066fcb 100644 (file)
 
   <changes>
     <release version="FOP Trunk">
+      <action context="Code" dev="JM" type="fix">
+        Fixed an IllegalArgumentException for absolutely positioned block-containers with a
+        border and no height/bpd set.
+      </action>
       <action context="Code" dev="JM" type="add">
         Add support for a two-pass production for PostScript output to minimize file size. This
         adds images only once and adds only the fonts that are really used.
index bbdf38e10540cfb6e8999d0c75613761816db2f2..d0ce3653964fc7ef11415238375cc66010942041 100644 (file)
@@ -23,7 +23,7 @@
     </p>
   </info>
   <fo>
-    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg">
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
       <fo:layout-master-set>
         <fo:simple-page-master master-name="normal" page-width="5in" page-height="5in">
           <fo:region-body/>
       </fo:layout-master-set>
       <fo:page-sequence master-reference="normal" white-space-collapse="true">
         <fo:flow flow-name="xsl-region-body">
-          <fo:block-container left="10pt" top="10pt" width="3in" absolute-position="absolute" background-color="orange">
+          <fo:block-container left="10pt" top="10pt" width="3in" absolute-position="absolute" 
+              background-color="orange">
             <fo:block background-color="yellow">absolutely positioned width, no height specified</fo:block>
           </fo:block-container>
+          <fo:block-container left="10pt" top="100pt" width="3in" position="absolute" 
+              background-color="orange" 
+              border-bottom-width="2pt" border-bottom-style="solid" border-bottom-color="red">
+            <fo:block background-color="yellow">absolutely positioned width, no height specified, plus border</fo:block>
+          </fo:block-container>
         </fo:flow>
       </fo:page-sequence>
     </fo:root>
   </fo>
   <checks>
     <!-- *** first block-container *** -->
-    <true xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/@is-viewport-area"/>
-    <eval expected="absolute" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/@positioning"/>
-    <eval expected="216000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/@ipd"/>
-    <eval expected="216000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/@ipda"/>
-    <eval expected="28800" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/@bpd"/>
-    <eval expected="28800" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/@bpda"/>
-    <eval expected="10000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/@left-position"/>
-    <eval expected="10000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/@top-position"/>
+    <true xpath="//flow/block[1]/@is-viewport-area"/>
+    <eval expected="absolute" xpath="//flow/block[1]/@positioning"/>
+    <eval expected="216000" xpath="//flow/block[1]/@ipd"/>
+    <eval expected="216000" xpath="//flow/block[1]/@ipda"/>
+    <eval expected="28800" xpath="//flow/block[1]/@bpd"/>
+    <eval expected="28800" xpath="//flow/block[1]/@bpda"/>
+    <eval expected="10000" xpath="//flow/block[1]/@left-position"/>
+    <eval expected="10000" xpath="//flow/block[1]/@top-position"/>
     <!--   -> reference-area -->
-    <true xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[1]/@is-reference-area"/>
-    <eval expected="216000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[1]/@ipd"/>
-    <eval expected="216000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[1]/@ipda"/>
-    <eval expected="28800" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[1]/@bpd"/>
-    <eval expected="28800" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[1]/@bpda"/>
+    <true xpath="//flow/block[1]/block[1]/@is-reference-area"/>
+    <eval expected="216000" xpath="//flow/block[1]/block[1]/@ipd"/>
+    <eval expected="216000" xpath="//flow/block[1]/block[1]/@ipda"/>
+    <eval expected="28800" xpath="//flow/block[1]/block[1]/@bpd"/>
+    <eval expected="28800" xpath="//flow/block[1]/block[1]/@bpda"/>
     <!--   -> nested block -->
-    <eval expected="216000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[1]/block[1]/@ipd"/>
-    <eval expected="216000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[1]/block[1]/@ipda"/>
-    <eval expected="28800" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[1]/block[1]/@bpd"/>
-    <eval expected="28800" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[1]/block[1]/@bpda"/>
+    <eval expected="216000" xpath="//flow/block[1]/block[1]/block[1]/@ipd"/>
+    <eval expected="216000" xpath="//flow/block[1]/block[1]/block[1]/@ipda"/>
+    <eval expected="28800" xpath="//flow/block[1]/block[1]/block[1]/@bpd"/>
+    <eval expected="28800" xpath="//flow/block[1]/block[1]/block[1]/@bpda"/>
+    
+    <!-- *** second block-container with a border (used to cause an IllegalStateException) *** -->
+    <eval expected="28800" xpath="//flow/block[2]/@bpd"/>
+    <eval expected="30800" xpath="//flow/block[2]/@bpda"/>
   </checks>
 </testcase>