You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2016/05/22 16:08:52 UTC
svn commit: r1745073 - in /poi/trunk/src:
examples/src/org/apache/poi/xslf/usermodel/
java/org/apache/poi/sl/usermodel/ ooxml/java/org/apache/poi/xslf/usermodel/
scratchpad/src/org/apache/poi/hslf/usermodel/
Author: centic
Date: Sun May 22 16:08:51 2016
New Revision: 1745073
URL: http://svn.apache.org/viewvc?rev=1745073&view=rev
Log:
Bug 58190: Add more overloaded methods for adding pictures from streams and files
Modified:
poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial5.java
poi/trunk/src/java/org/apache/poi/sl/usermodel/SlideShow.java
poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShow.java
Modified: poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial5.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial5.java?rev=1745073&r1=1745072&r2=1745073&view=diff
==============================================================================
--- poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial5.java (original)
+++ poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial5.java Sun May 22 16:08:51 2016
@@ -38,11 +38,11 @@ public class Tutorial5 {
XMLSlideShow ppt = new XMLSlideShow();
XSLFSlide slide = ppt.createSlide();
- File img = new File(System.getProperty("POI.testdata.path"), "slideshow/clock.jpg");
- byte[] data = IOUtils.toByteArray(new FileInputStream(img));
- XSLFPictureData pictureIndex = ppt.addPicture(data, PictureType.PNG);
- /*XSLFPictureShape shape =*/ slide.createPicture(pictureIndex);
+ File img = new File(System.getProperty("POI.testdata.path", "test-data"), "slideshow/clock.jpg");
+ XSLFPictureData pictureData = ppt.addPicture(img, PictureType.PNG);
+
+ /*XSLFPictureShape shape =*/ slide.createPicture(pictureData);
FileOutputStream out = new FileOutputStream("images.pptx");
ppt.write(out);
Modified: poi/trunk/src/java/org/apache/poi/sl/usermodel/SlideShow.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/usermodel/SlideShow.java?rev=1745073&r1=1745072&r2=1745073&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/usermodel/SlideShow.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/usermodel/SlideShow.java Sun May 22 16:08:51 2016
@@ -18,9 +18,7 @@
package org.apache.poi.sl.usermodel;
import java.awt.Dimension;
-import java.io.Closeable;
-import java.io.IOException;
-import java.io.OutputStream;
+import java.io.*;
import java.util.List;
import org.apache.poi.sl.usermodel.PictureData.PictureType;
@@ -64,18 +62,37 @@ public interface SlideShow<
*/
List<? extends PictureData> getPictureData();
-
/**
- * Adds a picture to the workbook.
+ * Adds a picture to the presentation.
*
* @param pictureData The bytes of the picture
* @param format The format of the picture.
*
- * @return the new picture reference
+ * @return the picture data reference.
*/
PictureData addPicture(byte[] pictureData, PictureType format) throws IOException;
/**
+ * Adds a picture to the presentation.
+ *
+ * @param is The stream to read the image from
+ * @param format The format of the picture.
+ *
+ * @return the picture data reference.
+ */
+ PictureData addPicture(InputStream is, PictureType format) throws IOException;
+
+ /**
+ * Adds a picture to the presentation.
+ *
+ * @param pict The file containing the image to add
+ * @param format The format of the picture.
+ *
+ * @return the picture data reference
+ */
+ PictureData addPicture(File pict, PictureType format) throws IOException;
+
+ /**
* Writes out the slideshow file the is represented by an instance of this
* class
*
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java?rev=1745073&r1=1745072&r2=1745073&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java Sun May 22 16:08:51 2016
@@ -19,6 +19,8 @@ package org.apache.poi.xslf.usermodel;
import static org.apache.poi.POIXMLTypeLoader.DEFAULT_XML_OPTIONS;
import java.awt.Dimension;
+import java.io.File;
+import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -202,7 +204,7 @@ implements SlideShow<XSLFShape,XSLFTextP
/**
* Create a slide and initialize it from the specified layout.
*
- * @param layout
+ * @param layout The layout to use for the new slide.
* @return created slide
*/
public XSLFSlide createSlide(XSLFSlideLayout layout) {
@@ -461,6 +463,45 @@ implements SlideShow<XSLFShape,XSLFTextP
return img;
}
+
+ /**
+ * Adds a picture to the slideshow.
+ *
+ * @param is The stream to read image from
+ * @param format The format of the picture
+ *
+ * @return the picture data
+ */
+ @Override
+ public XSLFPictureData addPicture(InputStream is, PictureType format) throws IOException
+ {
+ return addPicture(IOUtils.toByteArray(is), format);
+ }
+
+
+ /**
+ * Adds a picture to the presentation.
+ *
+ * @param pict The file containing the image to add
+ * @param format The format of the picture.
+ *
+ * @return the picture data
+ */
+ @Override
+ public XSLFPictureData addPicture(File pict, PictureType format) throws IOException
+ {
+ int length = (int) pict.length();
+ byte[] data = new byte[length];
+ FileInputStream is = new FileInputStream(pict);
+ try {
+ IOUtils.readFully(is, data);
+ } finally {
+ is.close();
+ }
+ return addPicture(data, format);
+ }
+
+
/**
* check if a picture with this picture data already exists in this presentation
*/
Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShow.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShow.java?rev=1745073&r1=1745072&r2=1745073&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShow.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShow.java Sun May 22 16:08:51 2016
@@ -78,6 +78,7 @@ import org.apache.poi.sl.usermodel.Maste
import org.apache.poi.sl.usermodel.PictureData.PictureType;
import org.apache.poi.sl.usermodel.Resources;
import org.apache.poi.sl.usermodel.SlideShow;
+import org.apache.poi.util.IOUtils;
import org.apache.poi.util.POILogFactory;
import org.apache.poi.util.POILogger;
import org.apache.poi.util.Units;
@@ -268,10 +269,10 @@ public final class HSLFSlideShow impleme
_documentRecord = (Document) record;
_fonts = _documentRecord.getEnvironment().getFontCollection();
}
- } else {
+ } /*else {
// No record at this number
// Odd, but not normally a problem
- }
+ }*/
}
}
@@ -295,8 +296,7 @@ public final class HSLFSlideShow impleme
private Record getCoreRecordForRefID(int refID) {
Integer coreRecordId = _sheetIdToCoreRecordsLookup.get(refID);
if (coreRecordId != null) {
- Record r = _mostRecentCoreRecords[coreRecordId];
- return r;
+ return _mostRecentCoreRecords[coreRecordId];
}
logger.log(POILogger.ERROR,
"We tried to look up a reference to a core record, but there was no core ID for reference ID "
@@ -705,12 +705,10 @@ public final class HSLFSlideShow impleme
*/
@Override
public HSLFSlide createSlide() {
- SlideListWithText slist = null;
-
// We need to add the records to the SLWT that deals
// with Slides.
// Add it, if it doesn't exist
- slist = _documentRecord.getSlideSlideListWithText();
+ SlideListWithText slist = _documentRecord.getSlideSlideListWithText();
if (slist == null) {
// Need to add a new one
slist = new SlideListWithText();
@@ -828,24 +826,43 @@ public final class HSLFSlideShow impleme
}
/**
- * Adds a picture to this presentation and returns the associated index.
+ * Adds a picture to the presentation.
+ *
+ * @param is The stream to read the image from
+ * @param format The format of the picture.
+ *
+ * @return the picture data.
+ */
+ @Override
+ public HSLFPictureData addPicture(InputStream is, PictureType format) throws IOException {
+ if (format == null || format.nativeId == -1) { // fail early
+ throw new IllegalArgumentException("Unsupported picture format: " + format);
+ }
+ return addPicture(IOUtils.toByteArray(is), format);
+ }
+
+ /**
+ * Adds a picture to the presentation.
*
* @param pict
* the file containing the image to add
* @param format
- * the format of the picture. One of constans defined in the
- * <code>Picture</code> class.
- * @return the index to this picture (1 based).
+ * The format of the picture.
+ *
+ * @return the picture data.
*/
+ @Override
public HSLFPictureData addPicture(File pict, PictureType format) throws IOException {
+ if (format == null || format.nativeId == -1) { // fail early
+ throw new IllegalArgumentException("Unsupported picture format: " + format);
+ }
int length = (int) pict.length();
byte[] data = new byte[length];
- FileInputStream is = null;
- try {
- is = new FileInputStream(pict);
- is.read(data);
+ FileInputStream is = new FileInputStream(pict);
+ try {
+ IOUtils.readFully(is, data);
} finally {
- if(is != null) is.close();
+ is.close();
}
return addPicture(data, format);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org