mirror of https://github.com/apache/poi.git
removed test which is covered by TestPPTX2PNG
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1880910 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
b57da2dada
commit
afe4a109a8
|
@ -22,42 +22,28 @@ import static org.junit.Assert.assertNotNull;
|
|||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertSame;
|
||||
|
||||
import java.awt.BasicStroke;
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.geom.Rectangle2D;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.BitSet;
|
||||
import java.util.List;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
import org.apache.poi.POIDataSamples;
|
||||
import org.apache.poi.ddf.EscherBSERecord;
|
||||
import org.apache.poi.hssf.usermodel.DummyGraphics2d;
|
||||
import org.apache.poi.sl.draw.DrawFactory;
|
||||
import org.apache.poi.sl.usermodel.PictureData.PictureType;
|
||||
import org.apache.poi.sl.usermodel.Slide;
|
||||
import org.apache.poi.sl.usermodel.SlideShow;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* Test Picture shape.
|
||||
*
|
||||
* @author Yegor Kozlov
|
||||
*/
|
||||
public final class TestPicture {
|
||||
private static POIDataSamples _slTests = POIDataSamples.getSlideShowInstance();
|
||||
private static final POIDataSamples _slTests = POIDataSamples.getSlideShowInstance();
|
||||
|
||||
@BeforeClass
|
||||
public static void disableImageIOCache() {
|
||||
|
@ -71,35 +57,33 @@ public final class TestPicture {
|
|||
*/
|
||||
@Test
|
||||
public void multiplePictures() throws IOException {
|
||||
HSLFSlideShow ppt = new HSLFSlideShow();
|
||||
try (HSLFSlideShow ppt = new HSLFSlideShow()) {
|
||||
HSLFSlide s = ppt.createSlide();
|
||||
HSLFSlide s2 = ppt.createSlide();
|
||||
HSLFSlide s3 = ppt.createSlide();
|
||||
|
||||
HSLFSlide s = ppt.createSlide();
|
||||
HSLFSlide s2 = ppt.createSlide();
|
||||
HSLFSlide s3 = ppt.createSlide();
|
||||
HSLFPictureData data = ppt.addPicture(_slTests.readFile("clock.jpg"), PictureType.JPEG);
|
||||
HSLFPictureShape pict = new HSLFPictureShape(data);
|
||||
HSLFPictureShape pict2 = new HSLFPictureShape(data);
|
||||
HSLFPictureShape pict3 = new HSLFPictureShape(data);
|
||||
|
||||
HSLFPictureData data = ppt.addPicture(_slTests.readFile("clock.jpg"), PictureType.JPEG);
|
||||
HSLFPictureShape pict = new HSLFPictureShape(data);
|
||||
HSLFPictureShape pict2 = new HSLFPictureShape(data);
|
||||
HSLFPictureShape pict3 = new HSLFPictureShape(data);
|
||||
pict.setAnchor(new Rectangle(10, 10, 100, 100));
|
||||
s.addShape(pict);
|
||||
EscherBSERecord bse1 = pict.getEscherBSERecord();
|
||||
assertEquals(1, bse1.getRef());
|
||||
|
||||
pict.setAnchor(new Rectangle(10,10,100,100));
|
||||
s.addShape(pict);
|
||||
EscherBSERecord bse1 = pict.getEscherBSERecord();
|
||||
assertEquals(1, bse1.getRef());
|
||||
pict2.setAnchor(new Rectangle(10, 10, 100, 100));
|
||||
s2.addShape(pict2);
|
||||
EscherBSERecord bse2 = pict.getEscherBSERecord();
|
||||
assertSame(bse1, bse2);
|
||||
assertEquals(2, bse1.getRef());
|
||||
|
||||
pict2.setAnchor(new Rectangle(10,10,100,100));
|
||||
s2.addShape(pict2);
|
||||
EscherBSERecord bse2 = pict.getEscherBSERecord();
|
||||
assertSame(bse1, bse2);
|
||||
assertEquals(2, bse1.getRef());
|
||||
|
||||
pict3.setAnchor(new Rectangle(10,10,100,100));
|
||||
s3.addShape(pict3);
|
||||
EscherBSERecord bse3 = pict.getEscherBSERecord();
|
||||
assertSame(bse2, bse3);
|
||||
assertEquals(3, bse1.getRef());
|
||||
|
||||
ppt.close();
|
||||
pict3.setAnchor(new Rectangle(10, 10, 100, 100));
|
||||
s3.addShape(pict3);
|
||||
EscherBSERecord bse3 = pict.getEscherBSERecord();
|
||||
assertSame(bse2, bse3);
|
||||
assertEquals(3, bse1.getRef());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -108,117 +92,64 @@ public final class TestPicture {
|
|||
*/
|
||||
@Test
|
||||
public void bug46122() throws IOException {
|
||||
HSLFSlideShow ppt = new HSLFSlideShow();
|
||||
HSLFSlide slide = ppt.createSlide();
|
||||
HSLFPictureData pd = HSLFPictureData.create(PictureType.PNG);
|
||||
|
||||
HSLFPictureShape pict = new HSLFPictureShape(pd); //index to non-existing picture data
|
||||
pict.setAnchor(new Rectangle2D.Double(50,50,100,100));
|
||||
pict.setSheet(slide);
|
||||
HSLFPictureData data = pict.getPictureData();
|
||||
assertNull(data);
|
||||
try (HSLFSlideShow ppt = new HSLFSlideShow()) {
|
||||
HSLFSlide slide = ppt.createSlide();
|
||||
HSLFPictureData pd = HSLFPictureData.create(PictureType.PNG);
|
||||
|
||||
BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
|
||||
Graphics2D graphics = img.createGraphics();
|
||||
pict.draw(graphics, null);
|
||||
|
||||
ppt.close();
|
||||
HSLFPictureShape pict = new HSLFPictureShape(pd); //index to non-existing picture data
|
||||
pict.setAnchor(new Rectangle2D.Double(50, 50, 100, 100));
|
||||
pict.setSheet(slide);
|
||||
HSLFPictureData data = pict.getPictureData();
|
||||
assertNull(data);
|
||||
|
||||
BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
|
||||
Graphics2D graphics = img.createGraphics();
|
||||
pict.draw(graphics, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void macImages() throws IOException {
|
||||
HSLFSlideShowImpl hss = new HSLFSlideShowImpl(_slTests.openResourceAsStream("53446.ppt"));
|
||||
try (InputStream is = _slTests.openResourceAsStream("53446.ppt");
|
||||
HSLFSlideShowImpl hss = new HSLFSlideShowImpl(is)) {
|
||||
|
||||
List<HSLFPictureData> pictures = hss.getPictureData();
|
||||
assertEquals(15, pictures.size());
|
||||
List<HSLFPictureData> pictures = hss.getPictureData();
|
||||
assertEquals(15, pictures.size());
|
||||
|
||||
int[][] expectedSizes = {
|
||||
null, // WMF
|
||||
{ 427, 428 }, // PNG
|
||||
{ 371, 370 }, // PNG
|
||||
{ 288, 183 }, // PNG
|
||||
{ 285, 97 }, // PNG
|
||||
{ 288, 168 }, // PNG
|
||||
null, // WMF
|
||||
null, // WMF
|
||||
{ 199, 259 }, // PNG
|
||||
{ 432, 244 }, // PNG
|
||||
{ 261, 258 }, // PNG
|
||||
null, // WMF
|
||||
null, // WMF
|
||||
null, // WMF
|
||||
null // EMF
|
||||
};
|
||||
int[][] expectedSizes = {
|
||||
null, // WMF
|
||||
{427, 428}, // PNG
|
||||
{371, 370}, // PNG
|
||||
{288, 183}, // PNG
|
||||
{285, 97}, // PNG
|
||||
{288, 168}, // PNG
|
||||
null, // WMF
|
||||
null, // WMF
|
||||
{199, 259}, // PNG
|
||||
{432, 244}, // PNG
|
||||
{261, 258}, // PNG
|
||||
null, // WMF
|
||||
null, // WMF
|
||||
null, // WMF
|
||||
null // EMF
|
||||
};
|
||||
|
||||
int i = 0;
|
||||
for (HSLFPictureData pd : pictures) {
|
||||
int[] dimensions = expectedSizes[i++];
|
||||
BufferedImage image = ImageIO.read(new ByteArrayInputStream(pd.getData()));
|
||||
switch (pd.getType()) {
|
||||
case WMF:
|
||||
case EMF:
|
||||
break;
|
||||
default:
|
||||
assertNotNull(image);
|
||||
assertEquals(dimensions[0], image.getWidth());
|
||||
assertEquals(dimensions[1], image.getHeight());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
hss.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore("Just for visual validation - antialiasing is different on various systems")
|
||||
public void bug54541()
|
||||
throws IOException, ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException {
|
||||
String[] files = {
|
||||
// "sample_pptx_grouping_issues.pptx",
|
||||
// "54542_cropped_bitmap.pptx",
|
||||
// "54541_cropped_bitmap.ppt",
|
||||
// "54541_cropped_bitmap2.ppt",
|
||||
"alterman_security.ppt",
|
||||
// "alterman_security3.pptx",
|
||||
};
|
||||
|
||||
BitSet pages = new BitSet();
|
||||
pages.set(2);
|
||||
|
||||
for (String file : files) {
|
||||
InputStream is = _slTests.openResourceAsStream(file);
|
||||
SlideShow<?,?> ss;
|
||||
if (file.endsWith("pptx")) {
|
||||
Class<?> cls = Class.forName("org.apache.poi.xslf.usermodel.XMLSlideShow");
|
||||
Constructor<?> ct = cls.getDeclaredConstructor(InputStream.class);
|
||||
ss = (SlideShow<?,?>)ct.newInstance(is);
|
||||
} else {
|
||||
ss = new HSLFSlideShow(is);
|
||||
}
|
||||
is.close();
|
||||
|
||||
boolean debugOut = false;
|
||||
Dimension pg = ss.getPageSize();
|
||||
for (Slide<?,?> slide : ss.getSlides()) {
|
||||
int slideNo = slide.getSlideNumber();
|
||||
if (!pages.get(slideNo-1)) {
|
||||
if (pages.nextSetBit(slideNo-1) == -1) break; else continue;
|
||||
}
|
||||
if (debugOut) {
|
||||
DummyGraphics2d graphics = new DummyGraphics2d();
|
||||
slide.draw(graphics);
|
||||
} else {
|
||||
BufferedImage img = new BufferedImage(pg.width, pg.height, BufferedImage.TYPE_INT_ARGB);
|
||||
Graphics2D graphics = img.createGraphics();
|
||||
slide.draw(graphics);
|
||||
graphics.setColor(Color.BLACK);
|
||||
graphics.setStroke(new BasicStroke(1));
|
||||
graphics.drawRect(0, 0, (int)pg.getWidth()-1, (int)pg.getHeight()-1);
|
||||
ImageIO.write(img, "PNG", new File(file.replaceFirst(".pptx?", "-")+slideNo+".png"));
|
||||
int i = 0;
|
||||
for (HSLFPictureData pd : pictures) {
|
||||
int[] dimensions = expectedSizes[i++];
|
||||
BufferedImage image = ImageIO.read(new ByteArrayInputStream(pd.getData()));
|
||||
switch (pd.getType()) {
|
||||
case WMF:
|
||||
case EMF:
|
||||
break;
|
||||
default:
|
||||
assertNotNull(image);
|
||||
assertNotNull(dimensions);
|
||||
assertEquals(dimensions[0], image.getWidth());
|
||||
assertEquals(dimensions[1], image.getHeight());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ss.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue