aboutsummaryrefslogtreecommitdiffstats
path: root/src/ooxml/testcases
diff options
context:
space:
mode:
authorAndreas Beeker <kiwiwings@apache.org>2015-11-21 15:54:01 +0000
committerAndreas Beeker <kiwiwings@apache.org>2015-11-21 15:54:01 +0000
commit74d58c8bde9a00b9b3695665c3b7b12fe2a262f1 (patch)
tree301ba43b27f2f3a08c0ca004d205cfa55b925644 /src/ooxml/testcases
parent4f2692f87071bc60480e1475246acdb68da02928 (diff)
downloadpoi-74d58c8bde9a00b9b3695665c3b7b12fe2a262f1.tar.gz
poi-74d58c8bde9a00b9b3695665c3b7b12fe2a262f1.zip
In preparation for table rendering, added table row heights and column widths to common sl.
To have better results in rendering switch anchor from java.awt.Rectangle to Rectangle2D. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1715540 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/ooxml/testcases')
-rw-r--r--src/ooxml/testcases/org/apache/poi/sl/TestTable.java64
-rw-r--r--src/ooxml/testcases/org/apache/poi/sl/draw/TestDrawPictureShape.java31
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFConnectorShape.java17
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFFreeformShape.java6
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFGroupShape.java6
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java12
6 files changed, 110 insertions, 26 deletions
diff --git a/src/ooxml/testcases/org/apache/poi/sl/TestTable.java b/src/ooxml/testcases/org/apache/poi/sl/TestTable.java
new file mode 100644
index 0000000000..d9a3717be8
--- /dev/null
+++ b/src/ooxml/testcases/org/apache/poi/sl/TestTable.java
@@ -0,0 +1,64 @@
+/*
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ====================================================================
+ */
+
+package org.apache.poi.sl;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+
+import org.apache.poi.POIDataSamples;
+import org.apache.poi.sl.usermodel.SlideShow;
+import org.apache.poi.sl.usermodel.SlideShowFactory;
+import org.apache.poi.sl.usermodel.TableShape;
+import org.junit.Test;
+
+public class TestTable {
+ private static POIDataSamples _slTests = POIDataSamples.getSlideShowInstance();
+
+ @Test
+ public void testColWidthRowHeight() throws IOException {
+ // Test of table dimensions of same slideshow saved as ppt/x
+ // to check if both return similar (points) value
+ SlideShow<?,?> ppt = SlideShowFactory.create(_slTests.getFile("table_test.ppt"));
+ TableShape<?,?> ts = (TableShape<?,?>)ppt.getSlides().get(0).getShapes().get(0);
+ int cols = ts.getNumberOfColumns();
+ int rows = ts.getNumberOfRows();
+
+ SlideShow<?,?> pptx = SlideShowFactory.create(_slTests.getFile("table_test.pptx"));
+ TableShape<?,?> tsx = (TableShape<?,?>)pptx.getSlides().get(0).getShapes().get(0);
+ int colsx = tsx.getNumberOfColumns();
+ int rowsx = tsx.getNumberOfRows();
+
+ assertEquals(cols, colsx);
+ assertEquals(rows, rowsx);
+
+ for (int i=0; i<cols; i++) {
+ assertEquals(ts.getColumnWidth(i), tsx.getColumnWidth(i), 0.2);
+ }
+
+ for (int i=0; i<rows; i++) {
+ assertEquals(ts.getRowHeight(i), tsx.getRowHeight(i), 0.3);
+ }
+
+ pptx.close();
+ ppt.close();
+ }
+
+}
diff --git a/src/ooxml/testcases/org/apache/poi/sl/draw/TestDrawPictureShape.java b/src/ooxml/testcases/org/apache/poi/sl/draw/TestDrawPictureShape.java
index 2fd0be3139..7d681e4b05 100644
--- a/src/ooxml/testcases/org/apache/poi/sl/draw/TestDrawPictureShape.java
+++ b/src/ooxml/testcases/org/apache/poi/sl/draw/TestDrawPictureShape.java
@@ -22,7 +22,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.awt.Dimension;
-import java.awt.Rectangle;
+import java.awt.geom.Rectangle2D;
import org.apache.poi.POIDataSamples;
import org.apache.poi.sl.usermodel.PictureData;
@@ -32,6 +32,7 @@ import org.apache.poi.sl.usermodel.Shape;
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.util.Units;
import org.junit.Test;
public class TestDrawPictureShape {
@@ -54,18 +55,32 @@ public class TestDrawPictureShape {
PictureData pd = picShape.getPictureData();
Dimension dimPd = pd.getImageDimension();
new DrawPictureShape(picShape).resize();
- Dimension dimShape = picShape.getAnchor().getSize();
+ Dimension dimShape = new Dimension(
+ (int)picShape.getAnchor().getWidth(),
+ (int)picShape.getAnchor().getHeight()
+ );
assertEquals(dimPd, dimShape);
- int newWidth = (int)(dimPd.getWidth()*(100d/dimPd.getHeight()));
+ double newWidth = (dimPd.getWidth()*(100d/dimPd.getHeight()));
// ... -1 is a rounding error
- Rectangle expRect = new Rectangle(50+300-newWidth-1, 50, newWidth, 100);
- Rectangle target = new Rectangle(50,50,300,100);
+ Rectangle2D expRect = new Rectangle2D.Double(rbf(50+300-newWidth, picShape), 50, rbf(newWidth, picShape), 100);
+ Rectangle2D target = new Rectangle2D.Double(50,50,300,100);
new DrawPictureShape(picShape).resize(target, RectAlign.BOTTOM_RIGHT);
- Rectangle actRect = picShape.getAnchor();
- assertEquals(expRect, actRect);
+ Rectangle2D actRect = picShape.getAnchor();
+ assertEquals(expRect.getX(), actRect.getX(), .0001);
+ assertEquals(expRect.getY(), actRect.getY(), .0001);
+ assertEquals(expRect.getWidth(), actRect.getWidth(), .0001);
+ assertEquals(expRect.getHeight(), actRect.getHeight(), .0001);
+ ss.close();
}
}
-
+ // round back and forth - points -> master -> points
+ static double rbf(double val, PictureShape<?,?> picShape) {
+ if (picShape.getClass().getName().contains("HSLF")) {
+ return Units.masterToPoints(Units.pointsToMaster(val));
+ } else {
+ return val;
+ }
+ }
}
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFConnectorShape.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFConnectorShape.java
index beed20719f..fb86c1926c 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFConnectorShape.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFConnectorShape.java
@@ -20,13 +20,18 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import java.awt.Color;
-import java.awt.Rectangle;
+import java.awt.geom.Rectangle2D;
import org.apache.poi.sl.usermodel.LineDecoration.DecorationShape;
import org.apache.poi.sl.usermodel.LineDecoration.DecorationSize;
-import org.apache.poi.sl.usermodel.*;
+import org.apache.poi.sl.usermodel.ShapeType;
import org.junit.Test;
-import org.openxmlformats.schemas.drawingml.x2006.main.*;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTConnection;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualConnectorProperties;
+import org.openxmlformats.schemas.drawingml.x2006.main.STLineEndLength;
+import org.openxmlformats.schemas.drawingml.x2006.main.STLineEndType;
+import org.openxmlformats.schemas.drawingml.x2006.main.STLineEndWidth;
+import org.openxmlformats.schemas.drawingml.x2006.main.STShapeType;
import org.openxmlformats.schemas.presentationml.x2006.main.CTConnector;
/**
@@ -122,17 +127,17 @@ public class TestXSLFConnectorShape {
XSLFAutoShape rect1 = slide.createAutoShape();
rect1.setShapeType(ShapeType.RECT);
- rect1.setAnchor(new Rectangle(100, 100, 100, 100));
+ rect1.setAnchor(new Rectangle2D.Double(100, 100, 100, 100));
rect1.setFillColor(Color.blue);
XSLFAutoShape rect2 = slide.createAutoShape();
rect2.setShapeType(ShapeType.RECT);
- rect2.setAnchor(new Rectangle(300, 300, 100, 100));
+ rect2.setAnchor(new Rectangle2D.Double(300, 300, 100, 100));
rect2.setFillColor(Color.red);
XSLFConnectorShape connector1 = slide.createConnector();
- connector1.setAnchor(new Rectangle(200, 150, 100, 200));
+ connector1.setAnchor(new Rectangle2D.Double(200, 150, 100, 200));
CTConnector ctConnector = (CTConnector)connector1.getXmlObject();
ctConnector.getSpPr().getPrstGeom().setPrst(STShapeType.BENT_CONNECTOR_3);
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFFreeformShape.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFFreeformShape.java
index 92eb9a7988..720c5f6e00 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFFreeformShape.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFFreeformShape.java
@@ -16,11 +16,11 @@
==================================================================== */
package org.apache.poi.xslf.usermodel;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
-import java.awt.Rectangle;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
+import java.awt.geom.Rectangle2D;
import org.junit.Test;
@@ -35,7 +35,7 @@ public class TestXSLFFreeformShape {
XSLFSlide slide = ppt.createSlide();
XSLFFreeformShape shape1 = slide.createFreeform();
// comples path consisting of a rectangle and an ellipse inside it
- GeneralPath path1 = new GeneralPath(new Rectangle(150, 150, 300, 300));
+ GeneralPath path1 = new GeneralPath(new Rectangle2D.Double(150, 150, 300, 300));
path1.append(new Ellipse2D.Double(200, 200, 100, 50), false);
shape1.setPath(path1);
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFGroupShape.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFGroupShape.java
index f5d180121a..ff06d51079 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFGroupShape.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFGroupShape.java
@@ -21,7 +21,7 @@ import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.awt.Dimension;
-import java.awt.Rectangle;
+import java.awt.geom.Rectangle2D;
import org.junit.Test;
@@ -40,11 +40,11 @@ public class TestXSLFGroupShape {
XSLFGroupShape group = slide.createGroup();
assertEquals(1, slide.getShapes().size());
- Rectangle interior = new Rectangle(-10, -10, 20, 20);
+ Rectangle2D interior = new Rectangle2D.Double(-10, -10, 20, 20);
group.setInteriorAnchor(interior);
assertEquals(interior, group.getInteriorAnchor());
- Rectangle anchor = new Rectangle(0, 0, 792, 612);
+ Rectangle2D anchor = new Rectangle2D.Double(0, 0, 792, 612);
group.setAnchor(anchor);
assertEquals(anchor, group.getAnchor());
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java
index a57771080d..7824616a7f 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java
@@ -24,7 +24,7 @@ import static org.junit.Assert.assertTrue;
import java.awt.Color;
import java.awt.Graphics2D;
-import java.awt.Rectangle;
+import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.List;
@@ -74,7 +74,7 @@ public class TestXSLFTextParagraph {
"of text within a shape. Properties here apply to all text " +
"residing within the corresponding paragraph.");
- Rectangle anchor = new Rectangle(50, 50, 300, 200);
+ Rectangle2D anchor = new Rectangle2D.Double(50, 50, 300, 200);
sh.setAnchor(anchor);
DrawTextParagraphProxy dtp = new DrawTextParagraphProxy(p);
@@ -172,7 +172,7 @@ public class TestXSLFTextParagraph {
"of text within a shape. Properties here apply to all text " +
"residing within the corresponding paragraph.");
- sh.setAnchor(new Rectangle(50, 50, 300, 200));
+ sh.setAnchor(new Rectangle2D.Double(50, 50, 300, 200));
DrawTextParagraphProxy dtp = new DrawTextParagraphProxy(p);
BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);
@@ -184,13 +184,13 @@ public class TestXSLFTextParagraph {
assertEquals(4, lines.size());
// decrease the shape width from 300 pt to 100 pt
- sh.setAnchor(new Rectangle(50, 50, 100, 200));
+ sh.setAnchor(new Rectangle2D.Double(50, 50, 100, 200));
dtp.breakText(graphics);
lines = dtp.getLines();
assertEquals(12, lines.size());
// decrease the shape width from 300 pt to 100 pt
- sh.setAnchor(new Rectangle(50, 50, 600, 200));
+ sh.setAnchor(new Rectangle2D.Double(50, 50, 600, 200));
dtp.breakText(graphics);
lines = dtp.getLines();
assertEquals(2, lines.size());
@@ -224,7 +224,7 @@ public class TestXSLFTextParagraph {
assertEquals("POI", lines.get(1).getString());
XSLFAutoShape sh2 = slide.createAutoShape();
- sh2.setAnchor(new Rectangle(50, 50, 300, 200));
+ sh2.setAnchor(new Rectangle2D.Double(50, 50, 300, 200));
XSLFTextParagraph p2 = sh2.addNewTextParagraph();
XSLFTextRun r2 = p2.addNewTextRun();
r2.setFontFamily("serif"); // this should always be available