You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2015/07/24 23:47:58 UTC
svn commit: r1692593 [5/17] - in /poi: site/src/documentation/content/xdocs/
trunk/ trunk/src/examples/src/org/apache/poi/hslf/examples/
trunk/src/examples/src/org/apache/poi/hssf/usermodel/examples/
trunk/src/examples/src/org/apache/poi/xslf/usermodel...
Modified: poi/trunk/src/java/org/apache/poi/sl/usermodel/AutoShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/usermodel/AutoShape.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/usermodel/AutoShape.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/usermodel/AutoShape.java Fri Jul 24 21:47:55 2015
@@ -17,6 +17,5 @@
package org.apache.poi.sl.usermodel;
-public interface AutoShape extends SimpleShape {
- public TextRun getTextRun();
+public interface AutoShape<T extends TextParagraph<? extends TextRun>> extends TextShape<T> {
}
Modified: poi/trunk/src/java/org/apache/poi/sl/usermodel/Background.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/usermodel/Background.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/usermodel/Background.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/usermodel/Background.java Fri Jul 24 21:47:55 2015
@@ -18,5 +18,5 @@
package org.apache.poi.sl.usermodel;
public interface Background extends Shape {
-
+ FillStyle getFillStyle();
}
Copied: poi/trunk/src/java/org/apache/poi/sl/usermodel/FreeformShape.java (from r1691849, poi/branches/common_sl/src/java/org/apache/poi/sl/usermodel/FreeformShape.java)
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/usermodel/FreeformShape.java?p2=poi/trunk/src/java/org/apache/poi/sl/usermodel/FreeformShape.java&p1=poi/branches/common_sl/src/java/org/apache/poi/sl/usermodel/FreeformShape.java&r1=1691849&r2=1692593&rev=1692593&view=diff
==============================================================================
--- poi/branches/common_sl/src/java/org/apache/poi/sl/usermodel/FreeformShape.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/usermodel/FreeformShape.java Fri Jul 24 21:47:55 2015
@@ -17,6 +17,26 @@
package org.apache.poi.sl.usermodel;
+import java.awt.geom.GeneralPath;
+
public interface FreeformShape<T extends TextParagraph<? extends TextRun>> extends AutoShape<T> {
+ /**
+ * Gets the shape path.
+ * <p>
+ * The path is translated in the shape's coordinate system, i.e.
+ * freeform.getPath().getBounds2D() equals to freeform.getAnchor()
+ * (small discrepancies are possible due to rounding errors)
+ * </p>
+ *
+ * @return the path
+ */
+ GeneralPath getPath();
+ /**
+ * Set the shape path
+ *
+ * @param path shape outline
+ * @return the number of points written
+ */
+ int setPath(GeneralPath path);
}
Modified: poi/trunk/src/java/org/apache/poi/sl/usermodel/Line.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/usermodel/Line.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/usermodel/Line.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/usermodel/Line.java Fri Jul 24 21:47:55 2015
@@ -17,6 +17,6 @@
package org.apache.poi.sl.usermodel;
-public interface Line extends AutoShape {
+public interface Line<T extends TextParagraph<? extends TextRun>> extends AutoShape<T> {
}
Modified: poi/trunk/src/java/org/apache/poi/sl/usermodel/MasterSheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/usermodel/MasterSheet.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/usermodel/MasterSheet.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/usermodel/MasterSheet.java Fri Jul 24 21:47:55 2015
@@ -17,6 +17,6 @@
package org.apache.poi.sl.usermodel;
-public interface MasterSheet extends Sheet {
+public interface MasterSheet<T extends Shape, SS extends SlideShow> extends Sheet<T,SS> {
}
Modified: poi/trunk/src/java/org/apache/poi/sl/usermodel/Notes.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/usermodel/Notes.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/usermodel/Notes.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/usermodel/Notes.java Fri Jul 24 21:47:55 2015
@@ -17,6 +17,8 @@
package org.apache.poi.sl.usermodel;
-public interface Notes extends Sheet {
- public TextRun getTextRun();
+import java.util.List;
+
+public interface Notes<T extends Shape, SS extends SlideShow> extends Sheet<T,SS> {
+ List<? extends List<? extends TextParagraph<? extends TextRun>>> getTextParagraphs();
}
Modified: poi/trunk/src/java/org/apache/poi/sl/usermodel/PictureData.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/usermodel/PictureData.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/usermodel/PictureData.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/usermodel/PictureData.java Fri Jul 24 21:47:55 2015
@@ -17,10 +17,11 @@
package org.apache.poi.sl.usermodel;
+import java.io.IOException;
+
public interface PictureData {
- public int getType();
- public byte[] getUID();
+ public String getContentType();
public byte[] getData();
- public void setData(byte[] data);
+ public void setData(byte[] data) throws IOException;
}
Modified: poi/trunk/src/java/org/apache/poi/sl/usermodel/Shape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/usermodel/Shape.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/usermodel/Shape.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/usermodel/Shape.java Fri Jul 24 21:47:55 2015
@@ -17,15 +17,13 @@
package org.apache.poi.sl.usermodel;
-import java.awt.geom.Rectangle2D;
public interface Shape {
- public int getShapeType();
-
- public Rectangle2D getAnchor();
- public void setAnchor(Rectangle2D anchor);
-
- public void moveTo(float x, float y);
-
- public Shape getParent();
+ ShapeContainer<? extends Shape> getParent();
+
+ /**
+ *
+ * @return the sheet this shape belongs to
+ */
+ Sheet<? extends Shape, ? extends SlideShow> getSheet();
}
Modified: poi/trunk/src/java/org/apache/poi/sl/usermodel/ShapeContainer.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/usermodel/ShapeContainer.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/usermodel/ShapeContainer.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/usermodel/ShapeContainer.java Fri Jul 24 21:47:55 2015
@@ -17,8 +17,30 @@
package org.apache.poi.sl.usermodel;
-public interface ShapeContainer {
- public Shape[] getShapes();
- public void addShape(Shape shape);
- public boolean removeShape(Shape shape);
+import java.util.List;
+
+
+public interface ShapeContainer<T extends Shape> extends Iterable<T> {
+ /**
+ * Returns an list containing all of the elements in this container in proper
+ * sequence (from first to last element).
+ *
+ * @return an list containing all of the elements in this container in proper
+ * sequence
+ */
+ List<T> getShapes();
+
+ void addShape(T shape);
+
+ /**
+ * Removes the specified shape from this sheet, if it is present
+ * (optional operation). If this sheet does not contain the element,
+ * it is unchanged.
+ *
+ * @param xShape shape to be removed from this sheet, if present
+ * @return <tt>true</tt> if this sheet contained the specified element
+ * @throws IllegalArgumentException if the type of the specified shape
+ * is incompatible with this sheet (optional)
+ */
+ boolean removeShape(T shape);
}
Modified: poi/trunk/src/java/org/apache/poi/sl/usermodel/Sheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/usermodel/Sheet.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/usermodel/Sheet.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/usermodel/Sheet.java Fri Jul 24 21:47:55 2015
@@ -17,13 +17,30 @@
package org.apache.poi.sl.usermodel;
+import java.awt.Graphics2D;
+
+
/**
* Common parent of Slides, Notes and Masters
*/
-public interface Sheet extends ShapeContainer {
- public SlideShow getSlideShow();
+public interface Sheet<T extends Shape, SS extends SlideShow> extends ShapeContainer<T> {
+ SS getSlideShow();
- public MasterSheet getMasterSheet();
+ /**
+ * @return whether shapes on the master sheet should be shown. By default master graphics is turned off.
+ * Sheets that support the notion of master (slide, slideLayout) should override it and
+ * check this setting in the sheet XML
+ */
+ boolean getFollowMasterGraphics();
+
+ MasterSheet<T,SS> getMasterSheet();
- public Background getBackground();
+ Background getBackground();
+
+ /**
+ * Convenience method to draw a sheet to a graphics context
+ *
+ * @param graphics
+ */
+ void draw(Graphics2D graphics);
}
Modified: poi/trunk/src/java/org/apache/poi/sl/usermodel/SimpleShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/usermodel/SimpleShape.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/usermodel/SimpleShape.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/usermodel/SimpleShape.java Fri Jul 24 21:47:55 2015
@@ -17,10 +17,20 @@
package org.apache.poi.sl.usermodel;
-public interface SimpleShape extends Shape {
- public Fill getFill();
- public LineStyle getLineStyle();
+import org.apache.poi.sl.draw.geom.CustomGeometry;
+import org.apache.poi.sl.draw.geom.IAdjustableShape;
- public Hyperlink getHyperlink();
- public void setHyperlink(Hyperlink hyperlink);
+
+public interface SimpleShape extends Shape, IAdjustableShape, PlaceableShape {
+ FillStyle getFillStyle();
+ LineDecoration getLineDecoration();
+ StrokeStyle getStrokeStyle();
+
+ CustomGeometry getGeometry();
+
+ ShapeType getShapeType();
+
+ boolean isPlaceholder();
+
+ Shadow getShadow();
}
Modified: poi/trunk/src/java/org/apache/poi/sl/usermodel/Slide.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/usermodel/Slide.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/usermodel/Slide.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/usermodel/Slide.java Fri Jul 24 21:47:55 2015
@@ -17,16 +17,21 @@
package org.apache.poi.sl.usermodel;
-public interface Slide extends Sheet {
- public Notes getNotes();
- public void setNotes(Notes notes);
+public interface Slide<T extends Shape, SS extends SlideShow, N extends Notes<T,SS>> extends Sheet<T, SS> {
+ N getNotes();
+ void setNotes(N notes);
- public boolean getFollowMasterBackground();
- public void setFollowMasterBackground(boolean follow);
+ boolean getFollowMasterBackground();
+ void setFollowMasterBackground(boolean follow);
- public boolean getFollowMasterColourScheme();
- public void setFollowMasterColourScheme(boolean follow);
+ boolean getFollowMasterColourScheme();
+ void setFollowMasterColourScheme(boolean follow);
- public boolean getFollowMasterObjects();
- public void setFollowMasterObjects(boolean follow);
+ boolean getFollowMasterObjects();
+ void setFollowMasterObjects(boolean follow);
+
+ /**
+ * @return the 1-based slide no.
+ */
+ int getSlideNumber();
}
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=1692593&r1=1692592&r2=1692593&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 Fri Jul 24 21:47:55 2015
@@ -17,14 +17,29 @@
package org.apache.poi.sl.usermodel;
+import java.awt.Dimension;
import java.io.IOException;
+import java.util.List;
public interface SlideShow {
- public Slide createSlide() throws IOException;
- public MasterSheet createMasterSheet() throws IOException;
+ Slide<? extends Shape, ? extends SlideShow, ? extends Notes<?,?>> createSlide() throws IOException;
- public Slide[] getSlides();
- public MasterSheet[] getMasterSheet();
+ List<? extends Slide<? extends Shape, ? extends SlideShow, ? extends Notes<?,?>>> getSlides();
- public Resources getResources();
+ MasterSheet<? extends Shape, ? extends SlideShow> createMasterSheet() throws IOException;
+
+ /**
+ * Returns all slide masters.
+ * This doesn't include notes master and other arbitrary masters.
+ */
+ List<? extends MasterSheet<? extends Shape, ? extends SlideShow>> getSlideMasters();
+
+ Resources getResources();
+
+ /**
+ * Returns the current page size
+ *
+ * @return the page size
+ */
+ Dimension getPageSize();
}
Modified: poi/trunk/src/java/org/apache/poi/sl/usermodel/TextBox.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/usermodel/TextBox.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/usermodel/TextBox.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/usermodel/TextBox.java Fri Jul 24 21:47:55 2015
@@ -17,5 +17,5 @@
package org.apache.poi.sl.usermodel;
-public interface TextBox extends AutoShape {
+public interface TextBox<T extends TextParagraph<? extends TextRun>> extends AutoShape<T> {
}
Modified: poi/trunk/src/java/org/apache/poi/sl/usermodel/TextRun.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/usermodel/TextRun.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/usermodel/TextRun.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/usermodel/TextRun.java Fri Jul 24 21:47:55 2015
@@ -17,14 +17,47 @@
package org.apache.poi.sl.usermodel;
+import java.awt.Color;
+
/**
* Some text.
- *
- * TODO - decide on how we do rich text stuff
*/
public interface TextRun {
- public String getText();
- public void setText(String text);
+ enum TextCap {
+ NONE,
+ SMALL,
+ ALL
+ }
+
+ String getRawText();
+ void setText(String text);
+
+ TextCap getTextCap();
+
+ Color getFontColor();
+ void setFontColor(Color color);
+
+
+ /**
+ * @return font size in points or null if font size is not set.
+ */
+ Double getFontSize();
- // TODO - rich text formatting stuff
+ /**
+ * @param fontSize font size in points, if null the underlying fontsize will be unset
+ */
+ void setFontSize(Double fontSize);
+ String getFontFamily();
+
+ boolean isBold();
+ boolean isItalic();
+ boolean isUnderlined();
+ boolean isStrikethrough();
+ boolean isSubscript();
+ boolean isSuperscript();
+
+ /**
+ * @return the pitch and family id or -1 if not applicable
+ */
+ byte getPitchAndFamily();
}
Modified: poi/trunk/src/java/org/apache/poi/util/HexDump.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/util/HexDump.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/util/HexDump.java (original)
+++ poi/trunk/src/java/org/apache/poi/util/HexDump.java Fri Jul 24 21:47:55 2015
@@ -170,49 +170,41 @@ public class HexDump {
* @return output string
*/
- public static String dump(final byte [] data, final long offset,
- final int index) {
- StringBuffer buffer;
- if ((index < 0) || (index >= data.length))
+ public static String dump(final byte [] data, final long offset, final int index) {
+ if ((index < 0) || (index > data.length))
{
throw new ArrayIndexOutOfBoundsException(
"illegal index: " + index + " into array of length "
+ data.length);
}
- long display_offset = offset + index;
- buffer = new StringBuffer(74);
+ long display_offset = offset + index;
+ StringBuilder buffer = new StringBuilder(74);
- for (int j = index; j < data.length; j += 16)
- {
+ for (int j = index; j <= data.length; j += 16) {
int chars_read = data.length - j;
- if (chars_read > 16)
- {
+ if (chars_read > 16) {
chars_read = 16;
}
+
buffer.append(dump(display_offset)).append(' ');
- for (int k = 0; k < 16; k++)
- {
- if (k < chars_read)
- {
- buffer.append(dump(data[ k + j ]));
- }
- else
- {
- buffer.append(" ");
- }
+ for (int k = 0; k < 16; k++) {
+ String hexDmp = (k < chars_read) ? dump(data[ k + j ]) : " ";
+ buffer.append(hexDmp);
buffer.append(' ');
}
- for (int k = 0; k < chars_read; k++)
- {
- if ((data[ k + j ] >= ' ') && (data[ k + j ] < 127))
- {
- buffer.append(( char ) data[ k + j ]);
- }
- else
- {
- buffer.append('.');
+ for (int k = 0; k < chars_read; k++) {
+ byte dataB = data[ k + j ];
+ char charB = (char)(dataB & 0xFF);
+ switch (charB) {
+ case 127: case 128: case 129: case 141: case 142: case 143: case 144: case 157: case 158:
+ charB = '.';
+ break;
+ default:
+ if (charB < ' ') charB = '.';
+ break;
}
+ buffer.append(charB);
}
buffer.append(EOL);
display_offset += chars_read;
Modified: poi/trunk/src/java/org/apache/poi/util/Units.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/util/Units.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/util/Units.java (original)
+++ poi/trunk/src/java/org/apache/poi/util/Units.java Fri Jul 24 21:47:55 2015
@@ -20,8 +20,30 @@ package org.apache.poi.util;
* @author Yegor Kozlov
*/
public class Units {
+ /**
+ * In Escher absolute distances are specified in
+ * English Metric Units (EMUs), occasionally referred to as A units;
+ * there are 360000 EMUs per centimeter, 914400 EMUs per inch, 12700 EMUs per point.
+ */
public static final int EMU_PER_PIXEL = 9525;
public static final int EMU_PER_POINT = 12700;
+ public static final int EMU_PER_CENTIMETER = 360000;
+
+ /**
+ * Master DPI (576 pixels per inch).
+ * Used by the reference coordinate system in PowerPoint (HSLF)
+ */
+ public static final int MASTER_DPI = 576;
+
+ /**
+ * Pixels DPI (96 pixels per inch)
+ */
+ public static final int PIXEL_DPI = 96;
+
+ /**
+ * Points DPI (72 pixels per inch)
+ */
+ public static final int POINT_DPI = 72;
/**
* Converts points to EMUs
@@ -42,17 +64,58 @@ public class Units {
}
/**
- * Converts a value of type FixedPoint to a decimal number
+ * Converts a value of type FixedPoint to a floating point
*
* @param fixedPoint
- * @return decimal number
+ * @return floating point (double)
*
* @see <a href="http://msdn.microsoft.com/en-us/library/dd910765(v=office.12).aspx">[MS-OSHARED] - 2.2.1.6 FixedPoint</a>
*/
- public static double fixedPointToDecimal(int fixedPoint) {
+ public static double fixedPointToDouble(int fixedPoint) {
int i = (fixedPoint >> 16);
int f = (fixedPoint >> 0) & 0xFFFF;
- double decimal = (i + f/65536.0);
- return decimal;
+ double floatPoint = (i + f/65536d);
+ return floatPoint;
+ }
+
+ /**
+ * Converts a value of type floating point to a FixedPoint
+ *
+ * @param floatPoint
+ * @return fixedPoint
+ *
+ * @see <a href="http://msdn.microsoft.com/en-us/library/dd910765(v=office.12).aspx">[MS-OSHARED] - 2.2.1.6 FixedPoint</a>
+ */
+ public static int doubleToFixedPoint(double floatPoint) {
+ int i = (int)Math.floor(floatPoint);
+ int f = (int)((floatPoint % 1d)*65536d);
+ int fixedPoint = (i << 16) | (f & 0xFFFF);
+ return fixedPoint;
+ }
+
+ public static double masterToPoints(int masterDPI) {
+ double points = masterDPI;
+ points *= POINT_DPI;
+ points /= MASTER_DPI;
+ return points;
+ }
+
+ public static int pointsToMaster(double points) {
+ points *= MASTER_DPI;
+ points /= POINT_DPI;
+ return (int)points;
+ }
+
+ public static int pointsToPixel(double points) {
+ points *= PIXEL_DPI;
+ points /= POINT_DPI;
+ return (int)points;
+ }
+
+ public static double pixelToPoints(int pixel) {
+ double points = pixel;
+ points *= POINT_DPI;
+ points /= PIXEL_DPI;
+ return points;
}
}
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/extractor/XSLFPowerPointExtractor.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/extractor/XSLFPowerPointExtractor.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/extractor/XSLFPowerPointExtractor.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/extractor/XSLFPowerPointExtractor.java Fri Jul 24 21:47:55 2015
@@ -17,6 +17,7 @@
package org.apache.poi.xslf.extractor;
import java.io.IOException;
+import java.util.List;
import org.apache.poi.POIXMLTextExtractor;
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
@@ -122,7 +123,7 @@ public class XSLFPowerPointExtractor ext
public String getText(boolean slideText, boolean notesText, boolean masterText) {
StringBuffer text = new StringBuffer();
- XSLFSlide[] slides = slideshow.getSlides();
+ List<XSLFSlide> slides = slideshow.getSlides();
XSLFCommentAuthors commentAuthors = slideshow.getCommentAuthors();
for (XSLFSlide slide : slides) {
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/model/ParagraphPropertyFetcher.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/model/ParagraphPropertyFetcher.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/model/ParagraphPropertyFetcher.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/model/ParagraphPropertyFetcher.java Fri Jul 24 21:47:55 2015
@@ -19,7 +19,7 @@
package org.apache.poi.xslf.model;
-import org.apache.poi.xslf.usermodel.XSLFSimpleShape;
+import org.apache.poi.xslf.usermodel.XSLFShape;
import org.apache.xmlbeans.XmlObject;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraphProperties;
@@ -34,7 +34,7 @@ public abstract class ParagraphPropertyF
_level = level;
}
- public boolean fetch(XSLFSimpleShape shape) {
+ public boolean fetch(XSLFShape shape) {
XmlObject[] o = shape.getXmlObject().selectPath(
"declare namespace p='http://schemas.openxmlformats.org/presentationml/2006/main' " +
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/model/PropertyFetcher.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/model/PropertyFetcher.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/model/PropertyFetcher.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/model/PropertyFetcher.java Fri Jul 24 21:47:55 2015
@@ -19,8 +19,8 @@
package org.apache.poi.xslf.model;
-import org.apache.poi.xslf.usermodel.XSLFSimpleShape;
import org.apache.poi.util.Internal;
+import org.apache.poi.xslf.usermodel.XSLFShape;
/**
* Used internally to navigate the PresentationML text style hierarchy and fetch properties
@@ -36,7 +36,7 @@ public abstract class PropertyFetcher<T>
* @param shape the shape being examined
* @return true if the desired property was fetched
*/
- public abstract boolean fetch(XSLFSimpleShape shape) ;
+ public abstract boolean fetch(XSLFShape shape);
public T getValue(){
return _value;
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/model/TextBodyPropertyFetcher.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/model/TextBodyPropertyFetcher.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/model/TextBodyPropertyFetcher.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/model/TextBodyPropertyFetcher.java Fri Jul 24 21:47:55 2015
@@ -19,7 +19,7 @@
package org.apache.poi.xslf.model;
-import org.apache.poi.xslf.usermodel.XSLFSimpleShape;
+import org.apache.poi.xslf.usermodel.XSLFShape;
import org.apache.xmlbeans.XmlObject;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBodyProperties;
@@ -32,7 +32,7 @@ import org.openxmlformats.schemas.drawin
*/
public abstract class TextBodyPropertyFetcher<T> extends PropertyFetcher<T> {
- public boolean fetch(XSLFSimpleShape shape) {
+ public boolean fetch(XSLFShape shape) {
XmlObject[] o = shape.getXmlObject().selectPath(
"declare namespace p='http://schemas.openxmlformats.org/presentationml/2006/main' " +
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=1692593&r1=1692592&r2=1692593&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 Fri Jul 24 21:47:55 2015
@@ -20,18 +20,24 @@ import java.awt.Dimension;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import java.util.regex.Pattern;
import org.apache.poi.POIXMLDocument;
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.POIXMLException;
-import org.apache.poi.POIXMLRelation;
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.openxml4j.opc.PackagePartName;
import org.apache.poi.openxml4j.opc.TargetMode;
+import org.apache.poi.sl.usermodel.MasterSheet;
+import org.apache.poi.sl.usermodel.Resources;
+import org.apache.poi.sl.usermodel.SlideShow;
import org.apache.poi.util.Beta;
import org.apache.poi.util.IOUtils;
import org.apache.poi.util.Internal;
@@ -60,7 +66,7 @@ import org.openxmlformats.schemas.presen
* top level object for creating new slides/etc.
*/
@Beta
-public class XMLSlideShow extends POIXMLDocument {
+public class XMLSlideShow extends POIXMLDocument implements SlideShow {
private static POILogger _logger = POILogFactory.getLogger(XMLSlideShow.class);
private CTPresentation _presentation;
@@ -323,7 +329,7 @@ public class XMLSlideShow extends POIXM
XSLFTheme theme = (XSLFTheme) createRelationship(XSLFRelation.THEME,
XSLFFactory.getInstance(), themeIndex);
- theme.importTheme(getSlides()[0].getTheme());
+ theme.importTheme(getSlides().get(0).getTheme());
_notesMaster.addRelation(theme.getPackageRelationship().getId(), theme);
PackagePartName themePackagePartName = theme.getPackagePart().getPartName();
@@ -339,15 +345,16 @@ public class XMLSlideShow extends POIXM
return _notesMaster;
}
- public XSLFSlideMaster[] getSlideMasters() {
- return _masters.values().toArray(new XSLFSlideMaster[_masters.size()]);
+ @Override
+ public List<XSLFSlideMaster> getSlideMasters() {
+ return new ArrayList<XSLFSlideMaster>(_masters.values());
}
/**
* Return all the slides in the slideshow
*/
- public XSLFSlide[] getSlides() {
- return _slides.toArray(new XSLFSlide[_slides.size()]);
+ public List<XSLFSlide> getSlides() {
+ return _slides;
}
/**
@@ -437,7 +444,7 @@ public class XMLSlideShow extends POIXM
*/
public int addPicture(byte[] pictureData, int format) {
XSLFPictureData img = findPictureData(pictureData);
- POIXMLRelation relDesc = XSLFPictureData.RELATIONS[format];
+ // POIXMLRelation relDesc = XSLFPictureData.RELATIONS[format];
if(img == null) {
int imageNumber = _pictures.size();
@@ -485,4 +492,13 @@ public class XMLSlideShow extends POIXM
return null;
}
+ public MasterSheet createMasterSheet() throws IOException {
+ // TODO: implement!
+ throw new UnsupportedOperationException();
+ }
+
+ public Resources getResources() {
+ // TODO: implement!
+ throw new UnsupportedOperationException();
+ }
}
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFAutoShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFAutoShape.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFAutoShape.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFAutoShape.java Fri Jul 24 21:47:55 2015
@@ -19,6 +19,7 @@
package org.apache.poi.xslf.usermodel;
+import org.apache.poi.sl.usermodel.AutoShape;
import org.apache.poi.util.Beta;
import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps;
import org.openxmlformats.schemas.drawingml.x2006.main.CTPresetGeometry2D;
@@ -35,7 +36,7 @@ import org.openxmlformats.schemas.presen
* @author Yegor Kozlov
*/
@Beta
-public class XSLFAutoShape extends XSLFTextShape {
+public class XSLFAutoShape extends XSLFTextShape implements AutoShape<XSLFTextParagraph> {
/*package*/ XSLFAutoShape(CTShape shape, XSLFSheet sheet) {
super(shape, sheet);
@@ -71,7 +72,7 @@ public class XSLFAutoShape extends XSLFT
}
protected CTTextBody getTextBody(boolean create){
- CTShape shape = (CTShape) getXmlObject();
+ CTShape shape = (CTShape)getXmlObject();
CTTextBody txBody = shape.getTxBody();
if (txBody == null && create) {
txBody = shape.addNewTxBody();
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFBackground.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFBackground.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFBackground.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFBackground.java Fri Jul 24 21:47:55 2015
@@ -17,25 +17,25 @@
package org.apache.poi.xslf.usermodel;
-import org.apache.xmlbeans.XmlObject;
-import org.openxmlformats.schemas.drawingml.x2006.main.CTBackgroundFillStyleList;
-import org.openxmlformats.schemas.drawingml.x2006.main.CTSchemeColor;
-import org.openxmlformats.schemas.drawingml.x2006.main.CTStyleMatrixReference;
-import org.openxmlformats.schemas.drawingml.x2006.main.CTTransform2D;
-import org.openxmlformats.schemas.presentationml.x2006.main.CTBackground;
-
import java.awt.Color;
import java.awt.Dimension;
-import java.awt.Graphics2D;
-import java.awt.Paint;
import java.awt.geom.Rectangle2D;
+import org.apache.poi.sl.draw.DrawPaint;
+import org.apache.poi.sl.usermodel.Background;
+import org.apache.poi.sl.usermodel.ColorStyle;
+import org.apache.poi.sl.usermodel.FillStyle;
+import org.apache.poi.sl.usermodel.PaintStyle;
+import org.apache.poi.sl.usermodel.PaintStyle.SolidPaint;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTTransform2D;
+import org.openxmlformats.schemas.presentationml.x2006.main.CTBackground;
+
/**
* Background shape
*
* @author Yegor Kozlov
*/
-public class XSLFBackground extends XSLFSimpleShape {
+public class XSLFBackground extends XSLFSimpleShape implements Background {
/* package */XSLFBackground(CTBackground shape, XSLFSheet sheet) {
super(shape, sheet);
@@ -47,48 +47,14 @@ public class XSLFBackground extends XSLF
return new Rectangle2D.Double(0, 0, pg.getWidth(), pg.getHeight());
}
- public void draw(Graphics2D graphics) {
- Rectangle2D anchor = getAnchor();
-
- Paint fill = getPaint(graphics);
- if(fill != null) {
- graphics.setPaint(fill);
- graphics.fill(anchor);
- }
- }
-
- /**
- * @return the Paint object to fill
- */
- Paint getPaint(Graphics2D graphics){
- RenderableShape rShape = new RenderableShape(this);
-
- Paint fill = null;
- CTBackground bg = (CTBackground)getXmlObject();
- if(bg.isSetBgPr()){
- XmlObject spPr = bg.getBgPr();
- fill = rShape.getPaint(graphics, spPr, null);
- } else if (bg.isSetBgRef()){
- CTStyleMatrixReference bgRef= bg.getBgRef();
- CTSchemeColor phClr = bgRef.getSchemeClr();
-
- int idx = (int)bgRef.getIdx() - 1001;
- XSLFTheme theme = getSheet().getTheme();
- CTBackgroundFillStyleList bgStyles =
- theme.getXmlObject().getThemeElements().getFmtScheme().getBgFillStyleLst();
-
- XmlObject bgStyle = bgStyles.selectPath("*")[idx];
- fill = rShape.selectPaint(graphics, bgStyle, phClr, theme.getPackagePart());
- }
-
- return fill;
- }
-
@Override
public Color getFillColor(){
- Paint p = getPaint(null);
- if(p instanceof Color){
- return (Color)p;
+ FillStyle fs = getFillStyle();
+ PaintStyle ps = fs.getPaint();
+ if (ps instanceof SolidPaint) {
+ SolidPaint sp = (SolidPaint)ps;
+ ColorStyle cs = sp.getSolidColor();
+ return DrawPaint.applyColorTransform(cs);
}
return null;
}
@@ -100,7 +66,7 @@ public class XSLFBackground extends XSLF
* @return dummy CTTransform2D bean
*/
@Override
- CTTransform2D getXfrm() {
+ protected CTTransform2D getXfrm() {
return CTTransform2D.Factory.newInstance();
}
}
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFColor.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFColor.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFColor.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFColor.java Fri Jul 24 21:47:55 2015
@@ -18,6 +18,12 @@
*/
package org.apache.poi.xslf.usermodel;
+import java.awt.Color;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.poi.sl.draw.DrawPaint;
+import org.apache.poi.sl.usermodel.ColorStyle;
import org.apache.poi.util.Beta;
import org.apache.poi.util.Internal;
import org.apache.xmlbeans.XmlObject;
@@ -30,10 +36,6 @@ import org.openxmlformats.schemas.drawin
import org.openxmlformats.schemas.drawingml.x2006.main.CTSystemColor;
import org.w3c.dom.Node;
-import java.awt.Color;
-import java.util.HashMap;
-import java.util.Map;
-
/**
* Encapsulates logic to read color definitions from DrawingML and convert them to java.awt.Color
*
@@ -63,40 +65,37 @@ public class XSLFColor {
* If not color information was found in the supplied xml object then a null is returned.
*/
public Color getColor() {
- return _color == null ? null : applyColorTransform(_color);
+ return DrawPaint.applyColorTransform(getColorStyle());
}
- private Color applyColorTransform(Color color){
- Color result = color;
+ public ColorStyle getColorStyle() {
+ return new ColorStyle() {
+ public Color getColor() {
+ return _color;
+ }
- int alpha = getAlpha();
- if(alpha != -1){
- result = new Color(
- result.getRed(), result.getGreen(), result.getBlue(),
- Math.round(255 * alpha * 0.01f));
- }
+ public int getAlpha() {
+ return getRawValue("alpha");
+ }
- int lumOff = getLumOff();
- int lumMod = getLumMod();
- if(lumMod != -1 || lumOff != -1){
- result = modulateLuminanace(result,
- lumMod == -1 ? 100 : lumMod,
- lumOff == -1 ? 0 : lumOff);
- }
+ public int getLumOff() {
+ return getRawValue("lumOff");
+ }
- int shade = getShade();
- if(shade != -1){
- result = shade(result, shade);
- }
+ public int getLumMod() {
+ return getRawValue("lumMod");
+ }
- int tint = getTint();
- if(tint != -1){
- result = tint(result, tint);
- }
+ public int getShade() {
+ return getRawValue("shade");
+ }
- return result;
+ public int getTint() {
+ return getRawValue("tint");
+ }
+ };
}
-
+
Color toColor(XmlObject obj, XSLFTheme theme) {
Color color = null;
for (XmlObject ch : obj.selectPath("*")) {
@@ -140,6 +139,7 @@ public class XSLFColor {
color = new Color(0xFF & val[0], 0xFF & val[1], 0xFF & val[2]);
} else {
// YK: color is a string like "menuText" or "windowText", we return black for such cases
+ @SuppressWarnings("unused")
String colorName = sys.getVal().toString();
color = Color.black;
}
@@ -150,66 +150,50 @@ public class XSLFColor {
return color;
}
- /**
- * Read a perecentage value from the supplied xml bean.
- * Example:
- * <a:tint val="45000"/>
- *
- * the returned value is 45
- *
- * @return the percentage value in the range [0 .. 100]
- */
- private int getPercentageValue(String elem){
+ private int getRawValue(String elem) {
String query = "declare namespace a='http://schemas.openxmlformats.org/drawingml/2006/main' $this//a:" + elem;
XmlObject[] obj;
// first ask the context color and if not found, ask the actual color bean
- if(_phClr != null){
+ if (_phClr != null){
obj = _phClr.selectPath(query);
- if(obj.length == 1){
+ if (obj.length == 1){
Node attr = obj[0].getDomNode().getAttributes().getNamedItem("val");
if(attr != null) {
- return Integer.parseInt(attr.getNodeValue()) / 1000;
+ return Integer.parseInt(attr.getNodeValue());
}
}
}
obj = _xmlObject.selectPath(query);
- if(obj.length == 1){
+ if (obj.length == 1){
Node attr = obj[0].getDomNode().getAttributes().getNamedItem("val");
if(attr != null) {
- return Integer.parseInt(attr.getNodeValue()) / 1000;
+ return Integer.parseInt(attr.getNodeValue());
}
}
-
- return -1;
+ return -1;
+ }
+
+ /**
+ * Read a perecentage value from the supplied xml bean.
+ * Example:
+ * <a:tint val="45000"/>
+ *
+ * the returned value is 45
+ *
+ * @return the percentage value in the range [0 .. 100]
+ */
+ private int getPercentageValue(String elem){
+ int val = getRawValue(elem);
+ return (val == -1) ? val : (val / 1000);
}
private int getAngleValue(String elem){
- String color = "declare namespace a='http://schemas.openxmlformats.org/drawingml/2006/main' $this//a:" + elem;
- XmlObject[] obj;
-
- // first ask the context color and if not found, ask the actual color bean
- if(_phClr != null){
- obj = _xmlObject.selectPath( color );
- if(obj.length == 1){
- Node attr = obj[0].getDomNode().getAttributes().getNamedItem("val");
- if(attr != null) {
- return Integer.parseInt(attr.getNodeValue()) / 60000;
- }
- }
- }
-
- obj = _xmlObject.selectPath( color );
- if(obj.length == 1){
- Node attr = obj[0].getDomNode().getAttributes().getNamedItem("val");
- if(attr != null) {
- return Integer.parseInt(attr.getNodeValue()) / 60000;
- }
- }
- return -1;
+ int val = getRawValue(elem);
+ return (val == -1) ? val : (val / 60000);
}
/**
@@ -387,7 +371,7 @@ public class XSLFColor {
* percentage with 0% indicating minimal shade and 100% indicating maximum
* or -1 if the value is not set
*/
- int getShade(){
+ public int getShade(){
return getPercentageValue("shade");
}
@@ -399,70 +383,12 @@ public class XSLFColor {
* percentage with 0% indicating minimal tint and 100% indicating maximum
* or -1 if the value is not set
*/
- int getTint(){
+ public int getTint(){
return getPercentageValue("tint");
}
/**
- * Apply lumMod / lumOff adjustments
- *
- * @param c the color to modify
- * @param lumMod luminance modulation in the range [0..100]
- * @param lumOff luminance offset in the range [0..100]
- * @return modified color
- */
- private static Color modulateLuminanace(Color c, int lumMod, int lumOff) {
- Color color;
- if (lumOff > 0) {
- color = new Color(
- (int) (Math.round((255 - c.getRed()) * (100.0 - lumMod) / 100.0 + c.getRed())),
- (int) (Math.round((255 - c.getGreen()) * lumOff / 100.0 + c.getGreen())),
- (int) (Math.round((255 - c.getBlue()) * lumOff / 100.0 + c.getBlue())),
- c.getAlpha()
- );
- } else {
- color = new Color(
- (int) (Math.round(c.getRed() * lumMod / 100.0)),
- (int) (Math.round(c.getGreen() * lumMod / 100.0)),
- (int) (Math.round(c.getBlue() * lumMod / 100.0)),
- c.getAlpha()
- );
- }
- return color;
- }
-
- /**
- * This algorithm returns result different from PowerPoint.
- * TODO: revisit and improve
- */
- private static Color shade(Color c, int shade) {
- return new Color(
- (int)(c.getRed() * shade * 0.01),
- (int)(c.getGreen() * shade * 0.01),
- (int)(c.getBlue() * shade * 0.01),
- c.getAlpha());
- }
-
- /**
- * This algorithm returns result different from PowerPoint.
- * TODO: revisit and improve
- */
- private static Color tint(Color c, int tint) {
- int r = c.getRed();
- int g = c.getGreen();
- int b = c.getBlue();
-
- float ftint = tint / 100.0f;
-
- int red = Math.round(ftint * r + (1 - ftint) * 255);
- int green = Math.round(ftint * g + (1 - ftint) * 255);
- int blue = Math.round(ftint * b + (1 - ftint) * 255);
-
- return new Color(red, green, blue);
- }
-
- /**
* Preset colors defined in DrawingML
*/
static final Map<String, Color> presetColors;
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFConnectorShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFConnectorShape.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFConnectorShape.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFConnectorShape.java Fri Jul 24 21:47:55 2015
@@ -19,6 +19,7 @@
package org.apache.poi.xslf.usermodel;
+import org.apache.poi.sl.usermodel.ConnectorShape;
import org.apache.poi.util.Beta;
import org.openxmlformats.schemas.drawingml.x2006.main.CTLineProperties;
import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps;
@@ -34,7 +35,7 @@ import org.openxmlformats.schemas.presen
* @author Yegor Kozlov
*/
@Beta
-public class XSLFConnectorShape extends XSLFSimpleShape {
+public class XSLFConnectorShape extends XSLFSimpleShape implements ConnectorShape {
/*package*/ XSLFConnectorShape(CTConnector shape, XSLFSheet sheet) {
super(shape, sheet);
@@ -43,6 +44,7 @@ public class XSLFConnectorShape extends
/**
* @param shapeId 1-based shapeId
*/
+ @SuppressWarnings("unused")
static CTConnector prototype(int shapeId) {
CTConnector ct = CTConnector.Factory.newInstance();
CTConnectorNonVisual nvSpPr = ct.addNewNvCxnSpPr();
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFFreeformShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFFreeformShape.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFFreeformShape.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFFreeformShape.java Fri Jul 24 21:47:55 2015
@@ -24,6 +24,7 @@ import java.awt.geom.GeneralPath;
import java.awt.geom.PathIterator;
import java.awt.geom.Rectangle2D;
+import org.apache.poi.sl.usermodel.FreeformShape;
import org.apache.poi.util.Beta;
import org.apache.poi.util.Units;
import org.apache.xmlbeans.XmlObject;
@@ -47,18 +48,13 @@ import org.openxmlformats.schemas.presen
* @author Yegor Kozlov
*/
@Beta
-public class XSLFFreeformShape extends XSLFAutoShape {
+public class XSLFFreeformShape extends XSLFAutoShape implements FreeformShape<XSLFTextParagraph> {
/*package*/ XSLFFreeformShape(CTShape shape, XSLFSheet sheet) {
super(shape, sheet);
}
- /**
- * Set the shape path
- *
- * @param path shape outline
- * @return the number of points written
- */
+ @Override
public int setPath(GeneralPath path) {
CTPath2D ctPath = CTPath2D.Factory.newInstance();
@@ -110,16 +106,7 @@ public class XSLFFreeformShape extends X
return numPoints;
}
- /**
- * Gets the shape path.
- * <p>
- * The path is translated in the shape's coordinate system, i.e.
- * freeform.getPath().getBounds2D() equals to freeform.getAnchor()
- * (small discrepancies are possible due to rounding errors)
- * </p>
- *
- * @return the path
- */
+ @Override
@SuppressWarnings("deprecation")
public GeneralPath getPath() {
GeneralPath path = new GeneralPath();
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java Fri Jul 24 21:47:55 2015
@@ -19,10 +19,15 @@
package org.apache.poi.xslf.usermodel;
+import java.awt.geom.Rectangle2D;
+
+import javax.xml.namespace.QName;
+
import org.apache.poi.POIXMLException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.sl.usermodel.ShapeType;
import org.apache.poi.util.Beta;
import org.apache.poi.util.Units;
import org.apache.xmlbeans.XmlCursor;
@@ -33,45 +38,21 @@ import org.openxmlformats.schemas.drawin
import org.openxmlformats.schemas.drawingml.x2006.main.CTTransform2D;
import org.openxmlformats.schemas.presentationml.x2006.main.CTGraphicalObjectFrame;
-import javax.xml.namespace.QName;
-import java.awt.Graphics2D;
-import java.awt.geom.Rectangle2D;
-
/**
* @author Yegor Kozlov
*/
@Beta
public class XSLFGraphicFrame extends XSLFShape {
- private final CTGraphicalObjectFrame _shape;
- private final XSLFSheet _sheet;
-
/*package*/ XSLFGraphicFrame(CTGraphicalObjectFrame shape, XSLFSheet sheet){
- _shape = shape;
- _sheet = sheet;
- }
-
- public CTGraphicalObjectFrame getXmlObject(){
- return _shape;
+ super(shape,sheet);
}
- public XSLFSheet getSheet(){
- return _sheet;
- }
-
- public int getShapeType(){
- throw new RuntimeException("NotImplemented");
- }
-
- public int getShapeId(){
- return (int)_shape.getNvGraphicFramePr().getCNvPr().getId();
- }
-
- public String getShapeName(){
- return _shape.getNvGraphicFramePr().getCNvPr().getName();
+ public ShapeType getShapeType(){
+ throw new UnsupportedOperationException();
}
public Rectangle2D getAnchor(){
- CTTransform2D xfrm = _shape.getXfrm();
+ CTTransform2D xfrm = ((CTGraphicalObjectFrame)getXmlObject()).getXfrm();
CTPoint2D off = xfrm.getOff();
long x = off.getX();
long y = off.getY();
@@ -84,7 +65,7 @@ public class XSLFGraphicFrame extends XS
}
public void setAnchor(Rectangle2D anchor){
- CTTransform2D xfrm = _shape.getXfrm();
+ CTTransform2D xfrm = ((CTGraphicalObjectFrame)getXmlObject()).getXfrm();
CTPoint2D off = xfrm.isSetOff() ? xfrm.getOff() : xfrm.addNewOff();
long x = Units.toEMU(anchor.getX());
long y = Units.toEMU(anchor.getY());
@@ -155,15 +136,11 @@ public class XSLFGraphicFrame extends XS
return false;
}
- public void draw(Graphics2D graphics){
-
- }
-
@Override
void copy(XSLFShape sh){
super.copy(sh);
- CTGraphicalObjectData data = _shape.getGraphic().getGraphicData();
+ CTGraphicalObjectData data = ((CTGraphicalObjectFrame)getXmlObject()).getGraphic().getGraphicData();
String uri = data.getUri();
if(uri.equals("http://schemas.openxmlformats.org/drawingml/2006/diagram")){
copyDiagram(data, (XSLFGraphicFrame)sh);
@@ -185,22 +162,22 @@ public class XSLFGraphicFrame extends XS
String dm = c.getAttributeText(new QName("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "dm"));
PackageRelationship dmRel = sheet.getPackagePart().getRelationship(dm);
PackagePart dmPart = sheet.getPackagePart().getRelatedPart(dmRel);
- _sheet.importPart(dmRel, dmPart);
+ getSheet().importPart(dmRel, dmPart);
String lo = c.getAttributeText(new QName("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "lo"));
PackageRelationship loRel = sheet.getPackagePart().getRelationship(lo);
PackagePart loPart = sheet.getPackagePart().getRelatedPart(loRel);
- _sheet.importPart(loRel, loPart);
+ getSheet().importPart(loRel, loPart);
String qs = c.getAttributeText(new QName("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "qs"));
PackageRelationship qsRel = sheet.getPackagePart().getRelationship(qs);
PackagePart qsPart = sheet.getPackagePart().getRelatedPart(qsRel);
- _sheet.importPart(qsRel, qsPart);
+ getSheet().importPart(qsRel, qsPart);
String cs = c.getAttributeText(new QName("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "cs"));
PackageRelationship csRel = sheet.getPackagePart().getRelationship(cs);
PackagePart csPart = sheet.getPackagePart().getRelatedPart(csRel);
- _sheet.importPart(csRel, csPart);
+ getSheet().importPart(csRel, csPart);
} catch (InvalidFormatException e){
throw new POIXMLException(e);
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java Fri Jul 24 21:47:55 2015
@@ -19,10 +19,19 @@
package org.apache.poi.xslf.usermodel;
+import java.awt.geom.Rectangle2D;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.regex.Pattern;
+
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.openxml4j.opc.PackageRelationship;
import org.apache.poi.openxml4j.opc.TargetMode;
+import org.apache.poi.sl.usermodel.GroupShape;
import org.apache.poi.util.Beta;
+import org.apache.poi.util.POILogFactory;
+import org.apache.poi.util.POILogger;
import org.apache.poi.util.Units;
import org.apache.xmlbeans.XmlObject;
import org.openxmlformats.schemas.drawingml.x2006.main.CTGroupShapeProperties;
@@ -35,42 +44,41 @@ import org.openxmlformats.schemas.presen
import org.openxmlformats.schemas.presentationml.x2006.main.CTGroupShapeNonVisual;
import org.openxmlformats.schemas.presentationml.x2006.main.CTShape;
-import java.awt.Graphics2D;
-import java.awt.geom.AffineTransform;
-import java.awt.geom.Rectangle2D;
-import java.util.Iterator;
-import java.util.List;
-import java.util.regex.Pattern;
-
/**
* Represents a group shape that consists of many shapes grouped together.
*
* @author Yegor Kozlov
*/
@Beta
-public class XSLFGroupShape extends XSLFShape implements XSLFShapeContainer {
- private final CTGroupShape _shape;
- private final XSLFSheet _sheet;
+public class XSLFGroupShape extends XSLFShape implements XSLFShapeContainer, GroupShape<XSLFShape> {
+ private static POILogger _logger = POILogFactory.getLogger(XSLFGroupShape.class);
+
private final List<XSLFShape> _shapes;
- private final CTGroupShapeProperties _spPr;
+ private final CTGroupShapeProperties _grpSpPr;
private XSLFDrawing _drawing;
- /*package*/ XSLFGroupShape(CTGroupShape shape, XSLFSheet sheet){
- _shape = shape;
- _sheet = sheet;
-
- _shapes = _sheet.buildShapes(_shape);
- _spPr = shape.getGrpSpPr();
- }
-
- @Override
- public CTGroupShape getXmlObject(){
- return _shape;
+ protected XSLFGroupShape(CTGroupShape shape, XSLFSheet sheet){
+ super(shape,sheet);
+ _shapes = sheet.buildShapes(shape);
+ _grpSpPr = shape.getGrpSpPr();
+ }
+
+ protected CTGroupShapeProperties getGrpSpPr() {
+ return _grpSpPr;
+ }
+
+ protected CTGroupTransform2D getSafeXfrm() {
+ CTGroupTransform2D xfrm = getXfrm();
+ return (xfrm == null ? getGrpSpPr().addNewXfrm() : xfrm);
+ }
+
+ protected CTGroupTransform2D getXfrm() {
+ return getGrpSpPr().getXfrm();
}
@Override
public Rectangle2D getAnchor(){
- CTGroupTransform2D xfrm = _spPr.getXfrm();
+ CTGroupTransform2D xfrm = getXfrm();
CTPoint2D off = xfrm.getOff();
long x = off.getX();
long y = off.getY();
@@ -84,7 +92,7 @@ public class XSLFGroupShape extends XSLF
@Override
public void setAnchor(Rectangle2D anchor){
- CTGroupTransform2D xfrm = _spPr.isSetXfrm() ? _spPr.getXfrm() : _spPr.addNewXfrm();
+ CTGroupTransform2D xfrm = getSafeXfrm();
CTPoint2D off = xfrm.isSetOff() ? xfrm.getOff() : xfrm.addNewOff();
long x = Units.toEMU(anchor.getX());
long y = Units.toEMU(anchor.getY());
@@ -104,7 +112,7 @@ public class XSLFGroupShape extends XSLF
* behavior of shapes placed within a group.
*/
public Rectangle2D getInteriorAnchor(){
- CTGroupTransform2D xfrm = _spPr.getXfrm();
+ CTGroupTransform2D xfrm = getXfrm();
CTPoint2D off = xfrm.getChOff();
long x = off.getX();
long y = off.getY();
@@ -122,8 +130,8 @@ public class XSLFGroupShape extends XSLF
* used for calculations of grouping, scaling, and rotation
* behavior of shapes placed within a group.
*/
- public void setInteriorAnchor(Rectangle2D anchor){
- CTGroupTransform2D xfrm = _spPr.isSetXfrm() ? _spPr.getXfrm() : _spPr.addNewXfrm();
+ public void setInteriorAnchor(Rectangle2D anchor) {
+ CTGroupTransform2D xfrm = getSafeXfrm();
CTPoint2D off = xfrm.isSetChOff() ? xfrm.getChOff() : xfrm.addNewChOff();
long x = Units.toEMU(anchor.getX());
long y = Units.toEMU(anchor.getY());
@@ -140,8 +148,9 @@ public class XSLFGroupShape extends XSLF
*
* @return child shapes contained witin this group
*/
- public XSLFShape[] getShapes(){
- return _shapes.toArray(new XSLFShape[_shapes.size()]);
+ @Override
+ public List<XSLFShape> getShapes(){
+ return _shapes;
}
/**
@@ -158,28 +167,19 @@ public class XSLFGroupShape extends XSLF
*/
public boolean removeShape(XSLFShape xShape) {
XmlObject obj = xShape.getXmlObject();
+ CTGroupShape grpSp = (CTGroupShape)getXmlObject();
if(obj instanceof CTShape){
- _shape.getSpList().remove(obj);
+ grpSp.getSpList().remove(obj);
} else if (obj instanceof CTGroupShape){
- _shape.getGrpSpList().remove(obj);
+ grpSp.getGrpSpList().remove(obj);
} else if (obj instanceof CTConnector){
- _shape.getCxnSpList().remove(obj);
+ grpSp.getCxnSpList().remove(obj);
} else {
throw new IllegalArgumentException("Unsupported shape: " + xShape);
}
return _shapes.remove(xShape);
}
- @Override
- public String getShapeName(){
- return _shape.getNvGrpSpPr().getCNvPr().getName();
- }
-
- @Override
- public int getShapeId(){
- return (int)_shape.getNvGrpSpPr().getCNvPr().getId();
- }
-
/**
* @param shapeId 1-based shapeId
*/
@@ -199,7 +199,7 @@ public class XSLFGroupShape extends XSLF
// shape factory methods
private XSLFDrawing getDrawing(){
if(_drawing == null) {
- _drawing = new XSLFDrawing(_sheet, _shape);
+ _drawing = new XSLFDrawing(getSheet(), (CTGroupShape)getXmlObject());
}
return _drawing;
}
@@ -207,36 +207,41 @@ public class XSLFGroupShape extends XSLF
public XSLFAutoShape createAutoShape(){
XSLFAutoShape sh = getDrawing().createAutoShape();
_shapes.add(sh);
+ sh.setParent(this);
return sh;
}
public XSLFFreeformShape createFreeform(){
XSLFFreeformShape sh = getDrawing().createFreeform();
_shapes.add(sh);
+ sh.setParent(this);
return sh;
}
public XSLFTextBox createTextBox(){
XSLFTextBox sh = getDrawing().createTextBox();
_shapes.add(sh);
+ sh.setParent(this);
return sh;
}
public XSLFConnectorShape createConnector(){
XSLFConnectorShape sh = getDrawing().createConnector();
_shapes.add(sh);
+ sh.setParent(this);
return sh;
}
public XSLFGroupShape createGroup(){
XSLFGroupShape sh = getDrawing().createGroup();
_shapes.add(sh);
+ sh.setParent(this);
return sh;
}
public XSLFPictureShape createPicture(int pictureIndex){
- List<PackagePart> pics = _sheet.getPackagePart().getPackage()
+ List<PackagePart> pics = getSheet().getPackagePart().getPackage()
.getPartsByName(Pattern.compile("/ppt/media/image" + (pictureIndex + 1) + ".*?"));
if(pics.size() == 0) {
@@ -245,91 +250,89 @@ public class XSLFGroupShape extends XSLF
PackagePart pic = pics.get(0);
- PackageRelationship rel = _sheet.getPackagePart().addRelationship(
+ PackageRelationship rel = getSheet().getPackagePart().addRelationship(
pic.getPartName(), TargetMode.INTERNAL, XSLFRelation.IMAGES.getRelation());
XSLFPictureShape sh = getDrawing().createPicture(rel.getId());
sh.resize();
_shapes.add(sh);
+ sh.setParent(this);
return sh;
}
+ public XSLFTable createTable(){
+ XSLFTable sh = getDrawing().createTable();
+ _shapes.add(sh);
+ sh.setParent(this);
+ return sh;
+ }
+
@Override
public void setFlipHorizontal(boolean flip){
- _spPr.getXfrm().setFlipH(flip);
+ getSafeXfrm().setFlipH(flip);
}
@Override
public void setFlipVertical(boolean flip){
- _spPr.getXfrm().setFlipV(flip);
+ getSafeXfrm().setFlipV(flip);
}
@Override
public boolean getFlipHorizontal(){
- return _spPr.getXfrm().getFlipH();
+ CTGroupTransform2D xfrm = getXfrm();
+ return (xfrm == null || !xfrm.isSetFlipH()) ? false : xfrm.getFlipH();
}
@Override
public boolean getFlipVertical(){
- return _spPr.getXfrm().getFlipV();
+ CTGroupTransform2D xfrm = getXfrm();
+ return (xfrm == null || !xfrm.isSetFlipV()) ? false : xfrm.getFlipV();
}
@Override
public void setRotation(double theta){
- _spPr.getXfrm().setRot((int)(theta*60000));
+ getSafeXfrm().setRot((int) (theta * 60000));
}
@Override
public double getRotation(){
- return (double)_spPr.getXfrm().getRot()/60000;
- }
-
- @Override
- public void draw(Graphics2D graphics){
-
- // the coordinate system of this group of shape
- Rectangle2D interior = getInteriorAnchor();
- // anchor of this group relative to the parent shape
- Rectangle2D exterior = getAnchor();
-
- AffineTransform tx = (AffineTransform)graphics.getRenderingHint(XSLFRenderingHint.GROUP_TRANSFORM);
- AffineTransform tx0 = new AffineTransform(tx);
-
- double scaleX = interior.getWidth() == 0. ? 1.0 : exterior.getWidth() / interior.getWidth();
- double scaleY = interior.getHeight() == 0. ? 1.0 : exterior.getHeight() / interior.getHeight();
-
- tx.translate(exterior.getX(), exterior.getY());
- tx.scale(scaleX, scaleY);
- tx.translate(-interior.getX(), -interior.getY());
-
- for (XSLFShape shape : getShapes()) {
- // remember the initial transform and restore it after we are done with the drawing
- AffineTransform at = graphics.getTransform();
- graphics.setRenderingHint(XSLFRenderingHint.GSAVE, true);
-
- shape.applyTransform(graphics);
- shape.draw(graphics);
-
- // restore the coordinate system
- graphics.setTransform(at);
- graphics.setRenderingHint(XSLFRenderingHint.GRESTORE, true);
- }
-
- graphics.setRenderingHint(XSLFRenderingHint.GROUP_TRANSFORM, tx0);
-
+ CTGroupTransform2D xfrm = getXfrm();
+ return (xfrm == null || !xfrm.isSetRot()) ? 0 : (xfrm.getRot() / 60000.d);
}
@Override
void copy(XSLFShape src){
XSLFGroupShape gr = (XSLFGroupShape)src;
+
+ // clear shapes
+ clear();
+
// recursively update each shape
- XSLFShape[] tgtShapes = getShapes();
- XSLFShape[] srcShapes = gr.getShapes();
- for(int i = 0; i < tgtShapes.length; i++){
- XSLFShape s1 = srcShapes[i];
- XSLFShape s2 = tgtShapes[i];
+ for(XSLFShape shape : gr.getShapes()) {
+ XSLFShape newShape = null;
+ if (shape instanceof XSLFTextBox) {
+ newShape = createTextBox();
+ } else if (shape instanceof XSLFAutoShape) {
+ newShape = createAutoShape();
+ } else if (shape instanceof XSLFConnectorShape) {
+ newShape = createConnector();
+ } else if (shape instanceof XSLFFreeformShape) {
+ newShape = createFreeform();
+ } else if (shape instanceof XSLFPictureShape) {
+ XSLFPictureShape p = (XSLFPictureShape)shape;
+ XSLFPictureData pd = p.getPictureData();
+ int picId = getSheet().getSlideShow().addPicture(pd.getData(), pd.getPictureType());
+ newShape = createPicture(picId);
+ } else if (shape instanceof XSLFGroupShape) {
+ newShape = createGroup();
+ } else if (shape instanceof XSLFTable) {
+ newShape = createTable();
+ } else {
+ _logger.log(POILogger.WARN, "copying of class "+shape.getClass()+" not supported.");
+ continue;
+ }
- s2.copy(s1);
+ newShape.copy(shape);
}
}
@@ -338,9 +341,15 @@ public class XSLFGroupShape extends XSLF
* The container will be empty after this call returns.
*/
public void clear() {
- for(XSLFShape shape : getShapes()){
+ List<XSLFShape> shapes = new ArrayList<XSLFShape>(getShapes());
+ for(XSLFShape shape : shapes){
removeShape(shape);
}
}
+ public void addShape(XSLFShape shape) {
+ throw new UnsupportedOperationException(
+ "Adding a shape from a different container is not supported -"
+ + " create it from scratch with XSLFGroupShape.create* methods");
+ }
}
\ No newline at end of file
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java Fri Jul 24 21:47:55 2015
@@ -17,10 +17,13 @@
package org.apache.poi.xslf.usermodel;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.sl.usermodel.Notes;
import org.apache.poi.util.Beta;
import org.apache.xmlbeans.XmlException;
import org.openxmlformats.schemas.presentationml.x2006.main.CTCommonSlideData;
@@ -28,7 +31,7 @@ import org.openxmlformats.schemas.presen
import org.openxmlformats.schemas.presentationml.x2006.main.NotesDocument;
@Beta
-public final class XSLFNotes extends XSLFSheet {
+public final class XSLFNotes extends XSLFSheet implements Notes<XSLFShape,XMLSlideShow> {
private CTNotesSlide _notes;
/**
@@ -80,7 +83,6 @@ public final class XSLFNotes extends XSL
return getMasterSheet().getTheme();
}
- @Override
public XSLFNotesMaster getMasterSheet() {
for (POIXMLDocumentPart p : getRelations()) {
if (p instanceof XSLFNotesMaster){
@@ -89,4 +91,16 @@ public final class XSLFNotes extends XSL
}
return null;
}
+
+ @Override
+ public List<List<XSLFTextParagraph>> getTextParagraphs() {
+ List<List<XSLFTextParagraph>> tp = new ArrayList<List<XSLFTextParagraph>>();
+ for (XSLFShape sh : super.getShapes()) {
+ if (sh instanceof XSLFTextShape) {
+ XSLFTextShape txt = (XSLFTextShape)sh;
+ tp.add(txt.getTextParagraphs());
+ }
+ }
+ return tp;
+ }
}
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotesMaster.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotesMaster.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotesMaster.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotesMaster.java Fri Jul 24 21:47:55 2015
@@ -23,6 +23,7 @@ import org.apache.poi.POIXMLDocumentPart
import org.apache.poi.POIXMLException;
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.sl.usermodel.MasterSheet;
import org.apache.poi.util.Beta;
import org.apache.xmlbeans.XmlException;
import org.openxmlformats.schemas.drawingml.x2006.main.CTColorMapping;
@@ -46,7 +47,7 @@ import org.openxmlformats.schemas.presen
* @author Yegor Kozlov
*/
@Beta
- public class XSLFNotesMaster extends XSLFSheet {
+ public class XSLFNotesMaster extends XSLFSheet implements MasterSheet<XSLFShape,XMLSlideShow> {
private CTNotesMaster _slide;
private XSLFTheme _theme;
@@ -93,7 +94,7 @@ import org.openxmlformats.schemas.presen
}
@Override
- public XSLFSheet getMasterSheet() {
+ public MasterSheet<XSLFShape,XMLSlideShow> getMasterSheet() {
return null;
}
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureData.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureData.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureData.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureData.java Fri Jul 24 21:47:55 2015
@@ -20,12 +20,14 @@
package org.apache.poi.xslf.usermodel;
import java.io.IOException;
+import java.io.OutputStream;
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.POIXMLException;
import org.apache.poi.POIXMLRelation;
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.sl.usermodel.PictureData;
import org.apache.poi.util.Beta;
import org.apache.poi.util.IOUtils;
@@ -35,7 +37,7 @@ import org.apache.poi.util.IOUtils;
* @author Yegor Kozlov
*/
@Beta
-public final class XSLFPictureData extends POIXMLDocumentPart {
+public final class XSLFPictureData extends POIXMLDocumentPart implements PictureData {
/**
* Extended windows meta file
*/
@@ -215,4 +217,17 @@ public final class XSLFPictureData exten
protected void prepareForCommit() {
// do not clear the part here
}
+
+ public String getContentType() {
+ POIXMLRelation rel = RELATIONS[getPictureType()];
+ return (rel == null) ? null : rel.getContentType();
+ }
+
+ public void setData(byte[] data) throws IOException {
+ OutputStream os = getPackagePart().getOutputStream();
+ os.write(data);
+ os.close();
+ }
+
+
}
\ No newline at end of file
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java Fri Jul 24 21:47:55 2015
@@ -19,7 +19,6 @@
package org.apache.poi.xslf.usermodel;
-import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
@@ -32,6 +31,7 @@ import javax.xml.namespace.QName;
import org.apache.poi.POIXMLException;
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.sl.usermodel.PictureShape;
import org.apache.poi.util.Beta;
import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlObject;
@@ -52,7 +52,7 @@ import org.openxmlformats.schemas.presen
* Represents a picture shape
*/
@Beta
-public class XSLFPictureShape extends XSLFSimpleShape {
+public class XSLFPictureShape extends XSLFSimpleShape implements PictureShape {
private XSLFPictureData _data;
/*package*/ XSLFPictureShape(CTPicture shape, XSLFSheet sheet) {
@@ -179,30 +179,14 @@ public class XSLFPictureShape extends XS
return id;
}
- public Insets getBlipClip(){
+ @Override
+ public Insets getClipping(){
CTPicture ct = (CTPicture)getXmlObject();
CTRelativeRect r = ct.getBlipFill().getSrcRect();
return (r == null) ? null : new Insets(r.getT(), r.getL(), r.getB(), r.getR());
}
- @Override
- public void drawContent(Graphics2D graphics) {
-
- XSLFPictureData data = getPictureData();
- if(data == null) return;
-
- XSLFImageRenderer renderer = (XSLFImageRenderer)graphics.getRenderingHint(XSLFRenderingHint.IMAGE_RENDERER);
- if(renderer == null) renderer = new XSLFImageRenderer();
-
- RenderableShape rShape = new RenderableShape(this);
- Rectangle2D anchor = rShape.getAnchor(graphics);
-
- Insets insets = getBlipClip();
-
- renderer.drawImage(graphics, data, anchor, insets);
- }
-
-
+ @SuppressWarnings("deprecation")
@Override
void copy(XSLFShape sh){
super.copy(sh);
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShadow.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShadow.java?rev=1692593&r1=1692592&r2=1692593&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShadow.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShadow.java Fri Jul 24 21:47:55 2015
@@ -17,21 +17,24 @@
package org.apache.poi.xslf.usermodel;
+import java.awt.Color;
+import java.awt.geom.Rectangle2D;
+
+import org.apache.poi.sl.draw.DrawPaint;
+import org.apache.poi.sl.usermodel.ColorStyle;
+import org.apache.poi.sl.usermodel.PaintStyle;
+import org.apache.poi.sl.usermodel.PaintStyle.SolidPaint;
+import org.apache.poi.sl.usermodel.Shadow;
import org.apache.poi.util.Units;
import org.openxmlformats.schemas.drawingml.x2006.main.CTOuterShadowEffect;
import org.openxmlformats.schemas.drawingml.x2006.main.CTSchemeColor;
-import java.awt.Color;
-import java.awt.Graphics2D;
-import java.awt.Shape;
-import java.awt.geom.Rectangle2D;
-
/**
* Represents a shadow of a shape. For now supports only outer shadows.
*
* @author Yegor Kozlov
*/
-public class XSLFShadow extends XSLFSimpleShape {
+public class XSLFShadow extends XSLFShape implements Shadow {
private XSLFSimpleShape _parent;
@@ -41,54 +44,15 @@ public class XSLFShadow extends XSLFSimp
_parent = parentShape;
}
-
- public void fill(Graphics2D graphics, Shape outline) {
-
- double shapeRotation = _parent.getRotation();
- if(_parent.getFlipVertical()){
- shapeRotation += 180;
- }
- double angle = getAngle() - shapeRotation;
- double dist = getDistance();
- double dx = dist * Math.cos(Math.toRadians(angle));
- double dy = dist * Math.sin(Math.toRadians(angle));
-
- graphics.translate(dx, dy);
-
- Color fillColor = getFillColor();
- if (fillColor != null) {
- graphics.setColor(fillColor);
- graphics.fill(outline);
- }
-
- graphics.translate(-dx, -dy);
- }
-
- public void draw(Graphics2D graphics, Shape outline) {
-
- double angle = getAngle();
- double dist = getDistance();
- double dx = dist * Math.cos(Math.toRadians(angle));
- double dy = dist * Math.sin(Math.toRadians(angle));
-
- graphics.translate(dx, dy);
-
- Color fillColor = getFillColor();
- if (fillColor != null) {
- graphics.setColor(fillColor);
- graphics.draw(outline);
- }
-
- graphics.translate(-dx, -dy);
+ @Override
+ public XSLFSimpleShape getShadowParent() {
+ return _parent;
}
-
- @Override
public Rectangle2D getAnchor(){
return _parent.getAnchor();
}
- @Override
public void setAnchor(Rectangle2D anchor){
throw new IllegalStateException("You can't set anchor of a shadow");
}
@@ -124,15 +88,25 @@ public class XSLFShadow extends XSLFSimp
* @return the color of this shadow.
* Depending whether the parent shape is filled or stroked, this color is used to fill or stroke this shadow
*/
- @Override
public Color getFillColor() {
+ SolidPaint ps = getFillStyle();
+ if (ps == PaintStyle.TRANSPARENT_PAINT) return null;
+ Color col = DrawPaint.applyColorTransform(ps.getSolidColor());
+ return col;
+ }
+
+ @Override
+ public SolidPaint getFillStyle() {
XSLFTheme theme = getSheet().getTheme();
CTOuterShadowEffect ct = (CTOuterShadowEffect)getXmlObject();
- if(ct == null) {
- return null;
- } else {
- CTSchemeColor phClr = ct.getSchemeClr();
- return new XSLFColor(ct, theme, phClr).getColor();
- }
+ if(ct == null) return PaintStyle.TRANSPARENT_PAINT;
+
+ CTSchemeColor phClr = ct.getSchemeClr();
+ final XSLFColor xc = new XSLFColor(ct, theme, phClr);
+ return new SolidPaint(){
+ public ColorStyle getSolidColor() {
+ return xc.getColorStyle();
+ }
+ };
}
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org