Author: kiwiwings
Date: Sat Apr 15 12:14:26 2017
New Revision: 1791500
URL: http://svn.apache.org/viewvc?rev=1791500&view=rev
Log:
#60993 - HSLF: Grid and rowspan calculation in table cells is wrong
Added:
poi/trunk/test-data/slideshow/bug60993.ppt (with props)
poi/trunk/test-data/slideshow/bug60993.pptx (with props)
Modified:
poi/site/src/documentation/content/xdocs/status.xml
poi/trunk/src/ooxml/testcases/org/apache/poi/sl/TestTable.java
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTable.java
Modified: poi/site/src/documentation/content/xdocs/status.xml
URL:
http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/status.xml?rev=1791500&r1=1791499&r2=1791500&view=diff
==============================================================================
--- poi/site/src/documentation/content/xdocs/status.xml (original)
+++ poi/site/src/documentation/content/xdocs/status.xml Sat Apr 15 12:14:26 2017
@@ -58,6 +58,7 @@
<release version="3.17-beta1" date="2017-07-??">
<actions>
+ <action dev="PD" type="fix" fixes-bug="60993" module="HSLF">Grid and
rowspan calculation in table cells is wrong</action>
<action dev="PD" type="fix" fixes-bug="60973" module="XDGF">Support
for "PolylineTo" as well as existing alternate spelling "PolyLineTo"</action>
</actions>
</release>
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/sl/TestTable.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/sl/TestTable.java?rev=1791500&r1=1791499&r2=1791500&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/sl/TestTable.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/sl/TestTable.java Sat Apr 15
12:14:26 2017
@@ -20,6 +20,10 @@
package org.apache.poi.sl;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeFalse;
import java.awt.geom.Rectangle2D;
@@ -30,6 +34,7 @@ import java.io.InputStream;
import org.apache.poi.POIDataSamples;
import org.apache.poi.hslf.usermodel.HSLFSlideShow;
+import org.apache.poi.sl.usermodel.Slide;
import org.apache.poi.sl.usermodel.SlideShow;
import org.apache.poi.sl.usermodel.SlideShowFactory;
import org.apache.poi.sl.usermodel.TableCell;
@@ -66,7 +71,7 @@ public class TestTable {
}
@Test
- public void testColWidthRowHeight() throws IOException {
+ public void colWidthRowHeight() throws IOException {
assumeFalse(xslfOnly);
// Test of table dimensions of same slideshow saved as ppt/x
@@ -110,7 +115,7 @@ public class TestTable {
}
@Test
- public void testTextDirectionHSLF() throws IOException {
+ public void textDirectionHSLF() throws IOException {
assumeFalse(xslfOnly);
SlideShow<?,?> ppt1 = new HSLFSlideShow();
testTextDirection(ppt1);
@@ -118,7 +123,7 @@ public class TestTable {
}
@Test
- public void testTextDirectionXSLF() throws IOException {
+ public void textDirectionXSLF() throws IOException {
SlideShow<?,?> ppt1 = new XMLSlideShow();
testTextDirection(ppt1);
ppt1.close();
@@ -160,4 +165,53 @@ public class TestTable {
}
ppt2.close();
}
-}
+
+ @Test
+ public void tableSpan() throws IOException {
+ String files[] = (xslfOnly) ? new String[]{ "bug60993.pptx" } : new
String[]{ "bug60993.pptx", "bug60993.ppt" };
+ for (String f : files) {
+ SlideShow<?,?> ppt = openSampleSlideshow(f);
+ Slide<?,?> slide = ppt.getSlides().get(0);
+ TableShape<?,?> ts = (TableShape<?,?>)slide.getShapes().get(0);
+ int cols = ts.getNumberOfColumns();
+ int rows = ts.getNumberOfRows();
+ for (int r=0; r<rows; r++) {
+ for (int c=0; c<cols; c++) {
+ TableCell<?,?> tc = ts.getCell(r, c);
+ int rc = r*10+c;
+ String msg = f+" (r"+r+",c"+c+")";
+ switch (rc) {
+ case 22:
+ case 51:
+ if (f.endsWith("ppt")) {
+ assertNull(msg, tc);
+ } else {
+ assertNotNull(msg, tc);
+ assertTrue(msg, tc.isMerged());
+ }
+ break;
+ case 21:
+ assertNotNull(msg, tc);
+ assertEquals(msg, 1, tc.getRowSpan());
+ assertEquals(msg, 2, tc.getGridSpan());
+ assertFalse(msg, tc.isMerged());
+ break;
+ case 41:
+ assertNotNull(msg, tc);
+ assertEquals(msg, 2, tc.getRowSpan());
+ assertEquals(msg, 1, tc.getGridSpan());
+ assertFalse(msg, tc.isMerged());
+ break;
+ default:
+ assertNotNull(msg, tc);
+ assertEquals(msg, 1, tc.getRowSpan());
+ assertEquals(msg, 1, tc.getGridSpan());
+ assertFalse(msg, tc.isMerged());
+ break;
+ }
+ }
+ }
+ ppt.close();
+ }
+ }
+}
\ No newline at end of file
Modified:
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTable.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTable.java?rev=1791500&r1=1791499&r2=1791500&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTable.java
(original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTable.java
Sat Apr 15 12:14:26 2017
@@ -21,6 +21,7 @@ import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
+import java.util.ListIterator;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
@@ -218,15 +219,11 @@ implements HSLFShapeContainer, TableShap
}
private int calcSpan(List<Double> spaces, double totalSpace, int idx) {
- if (idx == spaces.size()-1) {
- return 1;
- }
- int span = 0;
- double remainingSpace = totalSpace;
- while (idx+1 < spaces.size() && remainingSpace > 0) {
- remainingSpace -= spaces.get(idx+1)-spaces.get(idx);
+ int span = 1;
+ ListIterator<Double> li = spaces.listIterator(idx);
+ double start = li.next();
+ while (li.hasNext() && li.next()-start < totalSpace) {
span++;
- idx++;
}
return span;
}
Added: poi/trunk/test-data/slideshow/bug60993.ppt
URL:
http://svn.apache.org/viewvc/poi/trunk/test-data/slideshow/bug60993.ppt?rev=1791500&view=auto
==============================================================================
Binary file - no diff available.
Propchange: poi/trunk/test-data/slideshow/bug60993.ppt
------------------------------------------------------------------------------
svn:mime-type = application/vnd.ms-powerpoint
Added: poi/trunk/test-data/slideshow/bug60993.pptx
URL:
http://svn.apache.org/viewvc/poi/trunk/test-data/slideshow/bug60993.pptx?rev=1791500&view=auto
==============================================================================
Binary file - no diff available.
Propchange: poi/trunk/test-data/slideshow/bug60993.pptx
------------------------------------------------------------------------------
--- svn:mime-type (added)
+++ svn:mime-type Sat Apr 15 12:14:26 2017
@@ -0,0 +1 @@
+application/vnd.openxmlformats-officedocument.presentationml.presentation
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]