Kaynağa Gözat

Fixed an IllegalArgumentException for absolutely positioned block-containers with a border and no height/bpd set.

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@517415 13f79535-47bb-0310-9956-ffa450edef68
tags/fop-0_94
Jeremias Maerki 17 yıl önce
ebeveyn
işleme
74de788d25

+ 3
- 1
src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java Dosyayı Görüntüle

@@ -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()) {

+ 4
- 0
status.xml Dosyayı Görüntüle

@@ -28,6 +28,10 @@

<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.

+ 29
- 19
test/layoutengine/standard-testcases/block-container_absolute-position_no-height.xml Dosyayı Görüntüle

@@ -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/>
@@ -31,33 +31,43 @@
</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>

Loading…
İptal
Kaydet