poi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kiwiwi...@apache.org
Subject svn commit: r1791500 - in /poi: site/src/documentation/content/xdocs/ trunk/src/ooxml/testcases/org/apache/poi/sl/ trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/ trunk/test-data/slideshow/
Date Sat, 15 Apr 2017 12:14:26 GMT
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: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org


Mime
View raw message