]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
break-after set on the last child of a row-spanning cell must apply to the last row...
authorVincent Hennebert <vhennebert@apache.org>
Thu, 14 Feb 2008 12:09:05 +0000 (12:09 +0000)
committerVincent Hennebert <vhennebert@apache.org>
Thu, 14 Feb 2008 12:09:05 +0000 (12:09 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@627721 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/fo/flow/table/EffRow.java
test/layoutengine/standard-testcases/table-cell_row-span_breaks.xml

index ac99a1d378e2ba7edd00cd6fbe125c4f5aa7dc3e..7989f3d9d30005dc7a8cde9b450c87a4c8af116a 100644 (file)
@@ -197,7 +197,7 @@ public class EffRow {
         int breakAfter = Constants.EN_AUTO;
         for (Iterator iter = gridUnits.iterator(); iter.hasNext();) {
             GridUnit gu = (GridUnit) iter.next();
-            if (gu.isPrimary()) {
+            if (!gu.isEmpty() && gu.getColSpanIndex() == 0 && gu.isLastGridUnitRowSpan()) {
                 breakAfter = BreakUtil.compareBreakClasses(breakAfter,
                         gu.getPrimary().getBreakAfter());
             }
index f00d9894d26a17f2bbcf076d74370815fa47cd75..8f146ece5f04c4c3cbe0b4f6e2cb28cfbdad661e 100644 (file)
         </fo:flow>
       </fo:page-sequence>
 
+      <!-- table 3 -->
+      <!-- break-after set on a row-spanning cell must actually apply to the last row
+           spanned by the cell. -->
+      <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt">
+        <fo:flow flow-name="xsl-region-body">
+          <fo:block>Before the table</fo:block>
+          <fo:table width="100%" table-layout="fixed"
+            border-collapse="separate" border="2pt solid black">
+            <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/>
+            <fo:table-body border="2pt solid blue">
+              <fo:table-row border="inherit">
+                <fo:table-cell border="inherit" number-rows-spanned="2" border-color="red">
+                  <fo:block>Cell 1.1 Line 1</fo:block>
+                  <fo:block>Cell 1.1 Line 2</fo:block>
+                  <fo:block break-after="page">Cell 1.1 Line 3</fo:block>
+                </fo:table-cell>
+                <fo:table-cell border="inherit">
+                  <fo:block>Cell 1.2 Line 1</fo:block>
+                  <fo:block>Cell 1.2 Line 2</fo:block>
+                </fo:table-cell>
+              </fo:table-row>
+              <fo:table-row border="inherit">
+                <fo:table-cell border="inherit">
+                  <fo:block>Cell 2.2 Line 1</fo:block>
+                  <fo:block>Cell 2.2 Line 2</fo:block>
+                </fo:table-cell>
+              </fo:table-row>
+              <fo:table-row border="2pt solid blue">
+                <fo:table-cell border="inherit">
+                  <fo:block>Cell 3.1 Line 1</fo:block>
+                  <fo:block>Cell 3.1 Line 2</fo:block>
+                </fo:table-cell>
+                <fo:table-cell border="inherit">
+                  <fo:block>Cell 3.2 Line 1</fo:block>
+                  <fo:block>Cell 3.2 Line 2</fo:block>
+                </fo:table-cell>
+              </fo:table-row>
+            </fo:table-body>
+          </fo:table>
+          <fo:block>After the table</fo:block>
+        </fo:flow>
+      </fo:page-sequence>
+
     </fo:root>
   </fo>
   <checks>
     <eval expected="Cell 1.2 Line 3"      xpath="//pageViewport[@nr='5']//flow/block[1]/block[2]/block[1]"/>
     <eval expected="Cell 1.2 Line 4"      xpath="//pageViewport[@nr='5']//flow/block[1]/block[2]/block[2]"/>
 
+    <!-- table 3 -->
+    <!-- page 1 -->
+    <eval expected="2"                    xpath="count(//pageSequence[3]/pageViewport)"/>
+    <eval expected="48000"                xpath="//pageViewport[@nr='6']//flow/block[2]/@bpd"/>
+    <eval expected="50000"                xpath="//pageViewport[@nr='6']//flow/block[2]/@bpda"/>
+    <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='6']//flow/block[2]/@border-before"/>
+    <eval expected=""                     xpath="//pageViewport[@nr='6']//flow/block[2]/@border-after"/>
+    <!-- cell 1.2 -->
+    <eval expected="20000"                xpath="//pageViewport[@nr='6']//flow/block[2]/block[1]/@bpd"/>
+    <eval expected="24000"                xpath="//pageViewport[@nr='6']//flow/block[2]/block[1]/@bpda"/>
+    <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[2]/block[1]/@border-before"/>
+    <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[2]/block[1]/@border-after"/>
+    <eval expected="2"              xpath="count(//pageViewport[@nr='6']//flow/block[2]/block[1]/block)"/>
+    <eval expected="Cell 1.2 Line 1"      xpath="//pageViewport[@nr='6']//flow/block[2]/block[1]/block[1]"/>
+    <eval expected="Cell 1.2 Line 2"      xpath="//pageViewport[@nr='6']//flow/block[2]/block[1]/block[2]"/>
+    <!-- cell 1.1 -->
+    <eval expected="44000"                xpath="//pageViewport[@nr='6']//flow/block[2]/block[2]/@bpd"/>
+    <eval expected="48000"                xpath="//pageViewport[@nr='6']//flow/block[2]/block[2]/@bpda"/>
+    <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='6']//flow/block[2]/block[2]/@border-before"/>
+    <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='6']//flow/block[2]/block[2]/@border-after"/>
+    <eval expected="3"              xpath="count(//pageViewport[@nr='6']//flow/block[2]/block[2]/block)"/>
+    <eval expected="Cell 1.1 Line 1"      xpath="//pageViewport[@nr='6']//flow/block[2]/block[2]/block[1]"/>
+    <eval expected="Cell 1.1 Line 2"      xpath="//pageViewport[@nr='6']//flow/block[2]/block[2]/block[2]"/>
+    <eval expected="Cell 1.1 Line 3"      xpath="//pageViewport[@nr='6']//flow/block[2]/block[2]/block[3]"/>
+    <!-- cell 2.2 -->
+    <eval expected="20000"                xpath="//pageViewport[@nr='6']//flow/block[2]/block[3]/@bpd"/>
+    <eval expected="24000"                xpath="//pageViewport[@nr='6']//flow/block[2]/block[3]/@bpda"/>
+    <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[2]/block[3]/@border-before"/>
+    <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[2]/block[3]/@border-after"/>
+    <eval expected="2"              xpath="count(//pageViewport[@nr='6']//flow/block[2]/block[3]/block)"/>
+    <eval expected="Cell 2.2 Line 1"      xpath="//pageViewport[@nr='6']//flow/block[2]/block[3]/block[1]"/>
+    <eval expected="Cell 2.2 Line 2"      xpath="//pageViewport[@nr='6']//flow/block[2]/block[3]/block[2]"/>
+    <!-- page 2 -->
+    <eval expected="24000"                xpath="//pageViewport[@nr='7']//flow/block[1]/@bpd"/>
+    <eval expected="26000"                xpath="//pageViewport[@nr='7']//flow/block[1]/@bpda"/>
+    <eval expected=""                     xpath="//pageViewport[@nr='7']//flow/block[1]/@border-before"/>
+    <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='7']//flow/block[1]/@border-after"/>
+    <!-- cell 3.1 -->
+    <eval expected="20000"                xpath="//pageViewport[@nr='7']//flow/block[1]/block[1]/@bpd"/>
+    <eval expected="24000"                xpath="//pageViewport[@nr='7']//flow/block[1]/block[1]/@bpda"/>
+    <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='7']//flow/block[1]/block[1]/@border-before"/>
+    <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='7']//flow/block[1]/block[1]/@border-after"/>
+    <!-- cell 3.2 -->
+    <eval expected="20000"                xpath="//pageViewport[@nr='7']//flow/block[1]/block[2]/@bpd"/>
+    <eval expected="24000"                xpath="//pageViewport[@nr='7']//flow/block[1]/block[2]/@bpda"/>
+    <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='7']//flow/block[1]/block[2]/@border-before"/>
+    <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='7']//flow/block[1]/block[2]/@border-after"/>
+
   </checks>
 </testcase>