aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYegor Kozlov <yegor@apache.org>2011-11-14 13:00:13 +0000
committerYegor Kozlov <yegor@apache.org>2011-11-14 13:00:13 +0000
commit14ee39dde12decc5140574457b2c344f6341b504 (patch)
treec922e89dc066ed0755717365d96a766a2c5bcbb4
parentdd654d98705d6f82d504ad9c1cf9175080c88262 (diff)
downloadpoi-14ee39dde12decc5140574457b2c344f6341b504.tar.gz
poi-14ee39dde12decc5140574457b2c344f6341b504.zip
more progress with PPTX2PNG
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1201687 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/model/CharacterPropertyFetcher.java1
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/RenderableShape.java4
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFConnectorShape.java32
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java8
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRenderingHint.java5
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSimpleShape.java8
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java138
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextRun.java74
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java7
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/TestXSLFSlideShow.java1
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/XSLFTestDataSamples.java8
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java3
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/geom/TestFormulaParser.java5
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/geom/TestPresetGeometries.java7
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java3
-rwxr-xr-xsrc/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFAutoShape.java3
-rwxr-xr-xsrc/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFColor.java8
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFConnectorShape.java10
-rwxr-xr-xsrc/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFFreeformShape.java2
-rwxr-xr-xsrc/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFGroupShape.java2
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFHyperlink.java13
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFPictureShape.java8
-rwxr-xr-xsrc/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFShape.java1
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSheet.java1
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSimpleShape.java7
-rwxr-xr-xsrc/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlide.java4
-rwxr-xr-xsrc/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlideShow.java5
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTable.java10
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTableStyles.java9
-rwxr-xr-xsrc/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java6
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextShape.java6
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTheme.java2
32 files changed, 243 insertions, 158 deletions
diff --git a/src/ooxml/java/org/apache/poi/xslf/model/CharacterPropertyFetcher.java b/src/ooxml/java/org/apache/poi/xslf/model/CharacterPropertyFetcher.java
index 09674abfe8..ced941ccb3 100644
--- a/src/ooxml/java/org/apache/poi/xslf/model/CharacterPropertyFetcher.java
+++ b/src/ooxml/java/org/apache/poi/xslf/model/CharacterPropertyFetcher.java
@@ -27,6 +27,7 @@ import org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraphProperties
* @author Yegor Kozlov
*/
public abstract class CharacterPropertyFetcher<T> extends ParagraphPropertyFetcher<T> {
+ public boolean isFetchingFromMaster = false;
public CharacterPropertyFetcher(int level) {
super(level);
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/RenderableShape.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/RenderableShape.java
index 82a29756a4..27ba5d701b 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/RenderableShape.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/RenderableShape.java
@@ -430,6 +430,8 @@ class RenderableShape {
public Stroke applyStroke(Graphics2D graphics) {
float lineWidth = (float) _shape.getLineWidth();
+ if(lineWidth == 0.0f) lineWidth = 0.25f; // Both PowerPoint and OOo draw zero-length lines as 0.25pt
+
LineDash lineDash = _shape.getLineDash();
float[] dash = null;
float dash_phase = 0;
@@ -559,8 +561,6 @@ class RenderableShape {
lst.add(new Outline(canvasShape, p));
}
- // add any shape-specific stuff here (line decorations, etc.)
- lst.addAll(_shape.getCustomOutlines());
return lst;
}
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFConnectorShape.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFConnectorShape.java
index b7f1f3d389..cd3a925d54 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFConnectorShape.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFConnectorShape.java
@@ -35,12 +35,13 @@ import org.openxmlformats.schemas.presentationml.x2006.main.CTConnector;
import org.openxmlformats.schemas.presentationml.x2006.main.CTConnectorNonVisual;
import java.awt.Shape;
+import java.awt.Graphics2D;
+import java.awt.Color;
import java.awt.geom.AffineTransform;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
/**
@@ -206,7 +207,8 @@ public class XSLFConnectorShape extends XSLFSimpleShape {
LineEndLength tailLength = getLineTailLength();
LineEndWidth tailWidth = getLineTailWidth();
- double lineWidth = getLineWidth();
+ double lineWidth = Math.max(2.5, getLineWidth());
+
Rectangle2D anchor = getAnchor();
double x2 = anchor.getX() + anchor.getWidth(),
y2 = anchor.getY() + anchor.getHeight();
@@ -264,7 +266,7 @@ public class XSLFConnectorShape extends XSLFSimpleShape {
LineEndLength headLength = getLineHeadLength();
LineEndWidth headWidth = getLineHeadWidth();
- double lineWidth = getLineWidth();
+ double lineWidth = Math.max(2.5, getLineWidth());
Rectangle2D anchor = getAnchor();
double x1 = anchor.getX(),
y1 = anchor.getY();
@@ -287,7 +289,7 @@ public class XSLFConnectorShape extends XSLFSimpleShape {
break;
case STEALTH:
case ARROW:
- p = new Path();
+ p = new Path(false, true);
GeneralPath arrow = new GeneralPath();
arrow.moveTo((float) (lineWidth * 3 * scaleX), (float) (-lineWidth * scaleY * 2));
arrow.lineTo(0, 0);
@@ -319,8 +321,7 @@ public class XSLFConnectorShape extends XSLFSimpleShape {
return shape == null ? null : new Outline(shape, p);
}
- @Override
- List<Outline> getCustomOutlines(){
+ private List<Outline> getDecorationOutlines(){
List<Outline> lst = new ArrayList<Outline>();
Outline head = getHeadDecoration();
@@ -339,4 +340,23 @@ public class XSLFConnectorShape extends XSLFSimpleShape {
public XSLFShadow getShadow() {
return null;
}
+
+ @Override
+ public void draw(Graphics2D graphics){
+ super.draw(graphics);
+
+ // draw line decorations
+ Color lineColor = getLineColor();
+ if(lineColor != null) {
+ graphics.setPaint(lineColor);
+ for(Outline o : getDecorationOutlines()){
+ if(o.getPath().isFilled()){
+ graphics.fill(o.getOutline());
+ }
+ if(o.getPath().isStroked()){
+ graphics.draw(o.getOutline());
+ }
+ }
+ }
+ }
} \ No newline at end of file
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java
index 3159ee98a4..1c68193476 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java
@@ -281,6 +281,11 @@ public class XSLFGroupShape extends XSLFShape {
graphics.translate(exterior.getX(), exterior.getY());
double scaleX = exterior.getWidth() / interior.getWidth();
double scaleY = exterior.getHeight() / interior.getHeight();
+
+ // group transform scales shapes but not fonts
+ Number prevFontScale = (Number)graphics.getRenderingHint(XSLFRenderingHint.FONT_SCALE);
+ graphics.setRenderingHint(XSLFRenderingHint.FONT_SCALE, Math.abs(1/scaleY));
+
graphics.scale(scaleX, scaleY);
graphics.translate(-interior.getX(), -interior.getY());
@@ -296,6 +301,9 @@ public class XSLFGroupShape extends XSLFShape {
graphics.setTransform(at);
graphics.setRenderingHint(XSLFRenderingHint.GRESTORE, true);
}
+
+ graphics.setRenderingHint(XSLFRenderingHint.FONT_SCALE, prevFontScale);
+
}
} \ No newline at end of file
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRenderingHint.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRenderingHint.java
index 345d57c4b3..e8d70437ce 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRenderingHint.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRenderingHint.java
@@ -19,6 +19,8 @@
package org.apache.poi.xslf.usermodel;
+import org.apache.poi.util.Internal;
+
import java.awt.RenderingHints;
/**
@@ -71,4 +73,7 @@ public class XSLFRenderingHint extends RenderingHints.Key {
* draw text via {@link java.awt.font.TextLayout#draw(java.awt.Graphics2D, float, float)}
*/
public static final int TEXT_MODE_GLYPHS = 2;
+
+ @Internal
+ public static final XSLFRenderingHint FONT_SCALE = new XSLFRenderingHint(5);
} \ No newline at end of file
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSimpleShape.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSimpleShape.java
index 5e62ec87ea..92adf446e0 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSimpleShape.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSimpleShape.java
@@ -643,14 +643,6 @@ public abstract class XSLFSimpleShape extends XSLFShape {
/**
- * @return any shape-specific geometry that is not included in presetShapeDefinitions.xml
- * (line decorations, etc)
- */
- List<Outline> getCustomOutlines(){
- return Collections.emptyList();
- }
-
- /**
* draw any content within this shape (image, text, etc.).
*
* @param graphics the graphics to draw into
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java
index 4358288ee0..4608736398 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java
@@ -26,6 +26,8 @@ import org.openxmlformats.schemas.drawingml.x2006.main.CTTextField;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraph;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraphProperties;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextSpacing;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTTextTabStop;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTTextTabStopList;
import org.openxmlformats.schemas.drawingml.x2006.main.STTextAlignType;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextFont;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextCharBullet;
@@ -33,6 +35,8 @@ import org.openxmlformats.schemas.drawingml.x2006.main.CTColor;
import org.openxmlformats.schemas.drawingml.x2006.main.CTSRgbColor;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBulletSizePoint;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextLineBreak;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTTextNormalAutofit;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTTextCharacterProperties;
import org.openxmlformats.schemas.presentationml.x2006.main.CTPlaceholder;
import org.openxmlformats.schemas.presentationml.x2006.main.STPlaceholderType;
@@ -242,7 +246,7 @@ public class XSLFTextParagraph implements Iterable<XSLFTextRun>{
CTTextParagraphProperties pr = _p.isSetPPr() ? _p.getPPr() : _p.addNewPPr();
CTColor c = pr.isSetBuClr() ? pr.getBuClr() : pr.addNewBuClr();
CTSRgbColor clr = c.isSetSrgbClr() ? c.getSrgbClr() : c.addNewSrgbClr();
- clr.setVal(new byte[]{(byte)color.getRed(), (byte)color.getGreen(), (byte)color.getBlue()});
+ clr.setVal(new byte[]{(byte) color.getRed(), (byte) color.getGreen(), (byte) color.getBlue()});
}
public double getBulletFontSize(){
@@ -333,7 +337,45 @@ public class XSLFTextParagraph implements Iterable<XSLFTextRun>{
};
fetchParagraphProperty(fetcher);
// if the marL attribute is omitted, then a value of 347663 is implied
- return fetcher.getValue() == null ? Units.toPoints(347663) : fetcher.getValue();
+ return fetcher.getValue() == null ? 0 : fetcher.getValue();
+ }
+
+ /**
+ *
+ * @return the default size for a tab character within this paragraph
+ */
+ public double getDefaultTabSize(){
+ ParagraphPropertyFetcher<Double> fetcher = new ParagraphPropertyFetcher<Double>(getLevel()){
+ public boolean fetch(CTTextParagraphProperties props){
+ if(props.isSetDefTabSz()){
+ double val = Units.toPoints(props.getDefTabSz());
+ setValue(val);
+ return true;
+ }
+ return false;
+ }
+ };
+ fetchParagraphProperty(fetcher);
+ return fetcher.getValue() == null ? 0 : fetcher.getValue();
+ }
+
+ public double getTabStop(final int idx){
+ ParagraphPropertyFetcher<Double> fetcher = new ParagraphPropertyFetcher<Double>(getLevel()){
+ public boolean fetch(CTTextParagraphProperties props){
+ if(props.isSetTabLst()){
+ CTTextTabStopList tabStops = props.getTabLst();
+ if(idx < tabStops.sizeOfTabArray() ) {
+ CTTextTabStop ts = tabStops.getTabArray(idx);
+ double val = Units.toPoints(ts.getPos());
+ setValue(val);
+ return true;
+ }
+ }
+ return false;
+ }
+ };
+ fetchParagraphProperty(fetcher);
+ return fetcher.getValue() == null ? getDefaultTabSize() : fetcher.getValue();
}
/**
@@ -389,7 +431,18 @@ public class XSLFTextParagraph implements Iterable<XSLFTextRun>{
}
};
fetchParagraphProperty(fetcher);
- return fetcher.getValue() == null ? 100 : fetcher.getValue();
+
+ double lnSpc = fetcher.getValue() == null ? 100 : fetcher.getValue();
+ if(lnSpc > 0) {
+ // check if the percentage value is scaled
+ CTTextNormalAutofit normAutofit = getParentShape().getTextBodyPr().getNormAutofit();
+ if(normAutofit != null) {
+ double scale = 1 - (double)normAutofit.getLnSpcReduction() / 100000;
+ lnSpc *= scale;
+ }
+ }
+
+ return lnSpc;
}
/**
@@ -443,7 +496,9 @@ public class XSLFTextParagraph implements Iterable<XSLFTextRun>{
}
};
fetchParagraphProperty(fetcher);
- return fetcher.getValue() == null ? 0 : fetcher.getValue();
+
+ double spcBef = fetcher.getValue() == null ? 0 : fetcher.getValue();
+ return spcBef;
}
/**
@@ -535,7 +590,7 @@ public class XSLFTextParagraph implements Iterable<XSLFTextRun>{
setValue(false);
return true;
}
- if(props.isSetBuFont()){
+ if(props.isSetBuFont() || props.isSetBuChar()){
setValue(true);
return true;
}
@@ -596,7 +651,7 @@ public class XSLFTextParagraph implements Iterable<XSLFTextRun>{
width = anchor.getWidth() - leftInset - rightInset - leftMargin;
if(firstLine) {
if(isBullet()){
- width -= Math.abs(indent);
+ if(indent > 0) width -= indent;
} else {
if(indent > 0) width -= indent; // first line indentation
else if (indent < 0) { // hanging indentation: the first line start at the left margin
@@ -618,28 +673,25 @@ public class XSLFTextParagraph implements Iterable<XSLFTextRun>{
double leftMargin = getLeftMargin();
boolean firstLine = true;
double indent = getIndent();
+
+ //The vertical line spacing
+ double spacing = getLineSpacing();
for(TextFragment line : _lines){
- double penX = x;
+ double penX = x + leftMargin;
if(firstLine) {
-
if(_bullet != null){
if(indent < 0) {
// a negative value means "Hanging" indentation and
// indicates the position of the actual bullet character.
// (the bullet is shifted to right relative to the text)
- _bullet.draw(graphics, penX, penY);
- penX -= indent;
+ _bullet.draw(graphics, penX + indent, penY);
} else if(indent > 0){
- penX += leftMargin;
// a positive value means the "First Line" indentation:
// the first line is indented and other lines start at the bullet ofset
_bullet.draw(graphics, penX, penY);
penX += indent;
} else {
- // no special indent. The first line behaves like all others
- penX += leftMargin;
-
// a zero indent means that the bullet and text have the same offset
_bullet.draw(graphics, penX, penY);
@@ -647,19 +699,8 @@ public class XSLFTextParagraph implements Iterable<XSLFTextRun>{
penX += _bullet._layout.getAdvance() + 1;
}
} else {
- if(indent < 0) {
- // if bullet=false and indentation=hanging then the first line
- // starts at the left offset (penX is not incremented)
- } else if(indent > 0) {
- // first line indent shifts penX
- penX += indent + leftMargin;
- } else {
- // no special indent. The first line behaves like all others
- penX += leftMargin;
- }
+ penX += indent;
}
- } else {
- penX += leftMargin;
}
@@ -671,14 +712,11 @@ public class XSLFTextParagraph implements Iterable<XSLFTextRun>{
penX += (anchor.getWidth() - line.getWidth() - leftInset - rightInset);
break;
default:
- //penX += leftInset;
break;
}
line.draw(graphics, penX, penY);
- //The vertical line spacing
- double spacing = getLineSpacing();
if(spacing > 0) {
// If linespacing >= 0, then linespacing is a percentage of normal line height.
penY += spacing*0.01* _maxLineHeight;
@@ -689,6 +727,7 @@ public class XSLFTextParagraph implements Iterable<XSLFTextRun>{
firstLine = false;
}
+
return penY - y;
}
@@ -722,6 +761,7 @@ public class XSLFTextParagraph implements Iterable<XSLFTextRun>{
}
AttributedString getAttributedString(Graphics2D graphics){
+
String text = getRenderableText();
AttributedString string = new AttributedString(text);
@@ -740,7 +780,11 @@ public class XSLFTextParagraph implements Iterable<XSLFTextRun>{
// user can pass an object to convert fonts via a rendering hint
string.addAttribute(TextAttribute.FAMILY, run.getFontFamily(), startIndex, endIndex);
- string.addAttribute(TextAttribute.SIZE, (float)run.getFontSize(), startIndex, endIndex);
+ float fontSz = (float)run.getFontSize();
+ Number fontScale = (Number)graphics.getRenderingHint(XSLFRenderingHint.FONT_SCALE);
+ if(fontScale != null) fontSz *= fontScale.floatValue();
+
+ string.addAttribute(TextAttribute.SIZE, fontSz , startIndex, endIndex);
if(run.isBold()) {
string.addAttribute(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD, startIndex, endIndex);
}
@@ -768,30 +812,48 @@ public class XSLFTextParagraph implements Iterable<XSLFTextRun>{
return string;
}
+ /**
+ * ensure that the paragraph contains at least one character
+ */
+ private void ensureNotEmpty(){
+ XSLFTextRun r = addNewTextRun();
+ r.setText(" ");
+ CTTextCharacterProperties endPr = _p.getEndParaRPr();
+ if(endPr != null) {
+ if(endPr.isSetSz()) r.setFontSize(endPr.getSz() / 100);
+ }
+ }
+
void breakText(Graphics2D graphics){
_lines = new ArrayList<TextFragment>();
+ // does this paragraph contain text?
+ boolean emptyParagraph = _runs.size() == 0;
+
+ // ensure that the paragraph contains at least one character
+ if(_runs.size() == 0) ensureNotEmpty();
+
String text = getRenderableText();
+ if(text.length() == 0) return;
+
AttributedString at = getAttributedString(graphics);
AttributedCharacterIterator it = at.getIterator();
- if(it.getBeginIndex() == it.getEndIndex()) {
- return;
- }
LineBreakMeasurer measurer = new LineBreakMeasurer(it, graphics.getFontRenderContext());
for (;;) {
int startIndex = measurer.getPosition();
double wrappingWidth = getWrappingWidth(_lines.size() == 0) + 1; // add a pixel to compensate rounding errors
-
+ // shape width can be smaller that the sum of insets (proved by a test file)
+ if(wrappingWidth < 0) wrappingWidth = 1;
int nextBreak = text.indexOf('\n', startIndex + 1);
if(nextBreak == -1) nextBreak = it.getEndIndex();
TextLayout layout = measurer.nextLayout((float)wrappingWidth, nextBreak, true);
- if (layout == null) {
+ if (layout == null) {
// layout can be null if the entire word at the current position
// does not fit within the wrapping width. Try with requireNextWord=false.
layout = measurer.nextLayout((float)wrappingWidth, nextBreak, false);
- }
+ }
int endIndex = measurer.getPosition();
@@ -809,9 +871,10 @@ public class XSLFTextParagraph implements Iterable<XSLFTextRun>{
if(endIndex == it.getEndIndex()) break;
}
- if(isBullet()) {
+ if(isBullet() && !emptyParagraph) {
String buCharacter = getBulletCharacter();
String buFont = getBulletFont();
+ if(buFont == null) buFont = getTextRuns().get(0).getFontFamily();
if(buCharacter != null && buFont != null && _lines.size() > 0) {
AttributedString str = new AttributedString(buCharacter);
@@ -954,4 +1017,5 @@ public class XSLFTextParagraph implements Iterable<XSLFTextRun>{
r2.copy(r1);
}
}
+
}
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextRun.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextRun.java
index dc79e73c68..4f05caec95 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextRun.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextRun.java
@@ -29,8 +29,13 @@ import org.openxmlformats.schemas.drawingml.x2006.main.CTTextNormalAutofit;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraphProperties;
import org.openxmlformats.schemas.drawingml.x2006.main.STTextStrikeType;
import org.openxmlformats.schemas.drawingml.x2006.main.STTextUnderlineType;
+import org.openxmlformats.schemas.drawingml.x2006.main.STSchemeColorVal;
import java.awt.Color;
+import java.awt.font.FontRenderContext;
+import java.awt.font.TextLayout;
+import java.awt.font.TextAttribute;
+import java.text.AttributedString;
/**
* Represents a run of text within the containing text body. The run element is the
@@ -58,21 +63,54 @@ public class XSLFTextRun {
String getRenderableText(){
String txt = _r.getT();
- switch (getTextCap()){
- case ALL:
- txt = txt.toUpperCase();
- break;
- case SMALL:
- txt = txt.toLowerCase();
- break;
+
+ StringBuffer buf = new StringBuffer();
+ for(int i = 0; i < txt.length(); i++) {
+ char c = txt.charAt(i);
+ if(c == '\t') {
+ // replace tab with the effective number of white spaces
+ buf.append(" ");
+ } else {
+ switch (getTextCap()){
+ case ALL:
+ buf.append(Character.toUpperCase(c));
+ break;
+ case SMALL:
+ buf.append(Character.toLowerCase(c));
+ break;
+ default:
+ buf.append(c);
+ }
+ }
}
- // TODO-1 is is the place to convert wingdings to unicode
-
- // TODO-2 this is a temporary hack. Rendering text with tabs is not yet supported.
- // for now tabs are replaced with some number of spaces.
- return txt.replace("\t", " ");
+
+ return buf.toString();
}
+ /**
+ * Replace a tab with the effective number of white spaces.
+ *
+ * @return
+ */
+ private String tab2space(){
+ AttributedString string = new AttributedString(" ");
+ // user can pass an object to convert fonts via a rendering hint
+ string.addAttribute(TextAttribute.FAMILY, getFontFamily());
+
+ string.addAttribute(TextAttribute.SIZE, (float)getFontSize());
+ TextLayout l = new TextLayout(string.getIterator(), new FontRenderContext(null, true, true));
+ double wspace = l.getAdvance();
+
+ double tabSz = _p.getDefaultTabSize();
+
+ int numSpaces = (int)Math.ceil(tabSz / wspace);
+ StringBuffer buf = new StringBuffer();
+ for(int i = 0; i < numSpaces; i++) {
+ buf.append(' ');
+ }
+ return buf.toString();
+ }
+
public void setText(String text){
_r.setT(text);
}
@@ -98,13 +136,16 @@ public class XSLFTextRun {
public Color getFontColor(){
final XSLFTheme theme = _p.getParentShape().getSheet().getTheme();
CTShapeStyle style = _p.getParentShape().getSpStyle();
- final CTSchemeColor shapeStyle = style == null ? null : style.getFontRef().getSchemeClr();
+ final CTSchemeColor phClr = style == null ? null : style.getFontRef().getSchemeClr();
CharacterPropertyFetcher<Color> fetcher = new CharacterPropertyFetcher<Color>(_p.getLevel()){
public boolean fetch(CTTextCharacterProperties props){
CTSolidColorFillProperties solidFill = props.getSolidFill();
if(solidFill != null) {
- Color c = new XSLFColor(solidFill, theme, shapeStyle).getColor();
+ boolean useCtxColor =
+ (solidFill.isSetSchemeClr() && solidFill.getSchemeClr().getVal() == STSchemeColorVal.PH_CLR)
+ || isFetchingFromMaster;
+ Color c = new XSLFColor(solidFill, theme, useCtxColor ? phClr : null).getColor();
setValue(c);
return true;
}
@@ -410,7 +451,10 @@ public class XSLFTextRun {
ok = shape.fetchShapeProperty(fetcher);
if(!ok) {
CTTextParagraphProperties defaultProps = _p.getDefaultStyle();
- if(defaultProps != null) ok = fetcher.fetch(defaultProps);
+ if(defaultProps != null) {
+ fetcher.isFetchingFromMaster = true;
+ ok = fetcher.fetch(defaultProps);
+ }
}
}
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java b/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java
index 455ceae909..bc3ae8619b 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java
@@ -16,11 +16,7 @@
==================================================================== */
package org.apache.poi.xslf;
-import java.net.URI;
-import java.util.List;
-
import junit.framework.TestCase;
-
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
@@ -28,6 +24,9 @@ import org.apache.poi.xslf.usermodel.XSLFRelation;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
+import java.net.URI;
+import java.util.List;
+
public class TestXSLFBugs extends TestCase {
public void test51187() throws Exception {
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFSlideShow.java b/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFSlideShow.java
index 25f7012d37..f82ed00ce0 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFSlideShow.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFSlideShow.java
@@ -17,7 +17,6 @@
package org.apache.poi.xslf;
import junit.framework.TestCase;
-
import org.apache.poi.POIDataSamples;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackagePart;
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/XSLFTestDataSamples.java b/src/ooxml/testcases/org/apache/poi/xslf/XSLFTestDataSamples.java
index b6966d06ef..b307144ff3 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/XSLFTestDataSamples.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/XSLFTestDataSamples.java
@@ -16,14 +16,14 @@
==================================================================== */
package org.apache.poi.xslf;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-
import org.apache.poi.POIDataSamples;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+
/**
* @author Yegor Kozlov
*/
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java b/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java
index f030f3b101..e2183a7246 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java
@@ -16,12 +16,11 @@
==================================================================== */
package org.apache.poi.xslf.extractor;
+import junit.framework.TestCase;
import org.apache.poi.POIDataSamples;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xslf.XSLFSlideShow;
-import junit.framework.TestCase;
-
/**
* Tests for HXFPowerPointExtractor
*/
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/geom/TestFormulaParser.java b/src/ooxml/testcases/org/apache/poi/xslf/geom/TestFormulaParser.java
index 1168003c94..47d2277712 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/geom/TestFormulaParser.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/geom/TestFormulaParser.java
@@ -19,7 +19,10 @@
package org.apache.poi.xslf.geom;
import junit.framework.TestCase;
-import org.apache.poi.xslf.model.geom.*;
+import org.apache.poi.xslf.model.geom.Context;
+import org.apache.poi.xslf.model.geom.CustomGeometry;
+import org.apache.poi.xslf.model.geom.Formula;
+import org.apache.poi.xslf.model.geom.Guide;
import org.openxmlformats.schemas.drawingml.x2006.main.CTCustomGeometry2D;
/**
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/geom/TestPresetGeometries.java b/src/ooxml/testcases/org/apache/poi/xslf/geom/TestPresetGeometries.java
index eefdd91b41..7f5e967ccc 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/geom/TestPresetGeometries.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/geom/TestPresetGeometries.java
@@ -19,7 +19,12 @@
package org.apache.poi.xslf.geom;
import junit.framework.TestCase;
-import org.apache.poi.xslf.model.geom.*;
+import org.apache.poi.xslf.model.geom.Context;
+import org.apache.poi.xslf.model.geom.CustomGeometry;
+import org.apache.poi.xslf.model.geom.Guide;
+import org.apache.poi.xslf.model.geom.IAdjustableShape;
+import org.apache.poi.xslf.model.geom.Path;
+import org.apache.poi.xslf.model.geom.PresetGeometries;
import java.awt.geom.GeneralPath;
import java.awt.geom.Rectangle2D;
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java
index e522c375df..0fc4b20aaa 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java
@@ -17,12 +17,9 @@
package org.apache.poi.xslf.usermodel;
import junit.framework.TestCase;
-
import org.apache.poi.POIDataSamples;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackagePart;
-import org.apache.poi.xslf.usermodel.XMLSlideShow;
-import org.apache.poi.xslf.usermodel.XSLFRelation;
import org.openxmlformats.schemas.presentationml.x2006.main.CTNotesMasterIdListEntry;
import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideIdListEntry;
import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideMasterIdListEntry;
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFAutoShape.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFAutoShape.java
index d29cb30662..0ca30a3b94 100755
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFAutoShape.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFAutoShape.java
@@ -17,10 +17,9 @@
package org.apache.poi.xslf.usermodel;
import junit.framework.TestCase;
-
import org.apache.poi.util.Units;
-import org.openxmlformats.schemas.drawingml.x2006.main.STTextUnderlineType;
import org.openxmlformats.schemas.drawingml.x2006.main.STTextStrikeType;
+import org.openxmlformats.schemas.drawingml.x2006.main.STTextUnderlineType;
/**
* @author Yegor Kozlov
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFColor.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFColor.java
index 108fca327b..a08faf0e38 100755
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFColor.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFColor.java
@@ -17,15 +17,13 @@
package org.apache.poi.xslf.usermodel;
import junit.framework.TestCase;
-
import org.openxmlformats.schemas.drawingml.x2006.main.CTColor;
-import org.openxmlformats.schemas.drawingml.x2006.main.CTSchemeColor;
-import org.openxmlformats.schemas.drawingml.x2006.main.STSchemeColorVal;
-import org.openxmlformats.schemas.drawingml.x2006.main.CTSRgbColor;
import org.openxmlformats.schemas.drawingml.x2006.main.CTHslColor;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTSRgbColor;
import org.openxmlformats.schemas.drawingml.x2006.main.STPresetColorVal;
+import org.openxmlformats.schemas.drawingml.x2006.main.STSchemeColorVal;
-import java.awt.*;
+import java.awt.Color;
/**
* @author Yegor Kozlov
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 dcfd479cc9..7ff45f5c8b 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFConnectorShape.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFConnectorShape.java
@@ -17,17 +17,9 @@
package org.apache.poi.xslf.usermodel;
import junit.framework.TestCase;
-
-import org.apache.poi.util.Units;
-import org.apache.poi.xslf.usermodel.LineCap;
-import org.apache.poi.xslf.usermodel.LineDash;
-import org.openxmlformats.schemas.drawingml.x2006.main.STLineCap;
-import org.openxmlformats.schemas.drawingml.x2006.main.STPresetLineDashVal;
+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.STLineEndLength;
-
-import java.awt.*;
/**
* @author Yegor Kozlov
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 f52cc83dde..f212abeae4 100755
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFFreeformShape.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFFreeformShape.java
@@ -18,7 +18,7 @@ package org.apache.poi.xslf.usermodel;
import junit.framework.TestCase;
-import java.awt.*;
+import java.awt.Rectangle;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
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 13e8eb84d4..7f11ecc762 100755
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFGroupShape.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFGroupShape.java
@@ -18,7 +18,7 @@ package org.apache.poi.xslf.usermodel;
import junit.framework.TestCase;
-import java.awt.*;
+import java.awt.Dimension;
import java.awt.geom.Rectangle2D;
/**
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFHyperlink.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFHyperlink.java
index fe968b0b7f..33cf3225e7 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFHyperlink.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFHyperlink.java
@@ -17,18 +17,11 @@
package org.apache.poi.xslf.usermodel;
import junit.framework.TestCase;
-
-import java.awt.*;
-import java.awt.geom.Ellipse2D;
-import java.awt.geom.GeneralPath;
-import java.util.*;
-import java.util.List;
-import java.net.URI;
-
-import org.apache.poi.xslf.XSLFTestDataSamples;
-import org.apache.poi.xssf.usermodel.XSSFTable;
import org.apache.poi.openxml4j.opc.PackageRelationship;
import org.apache.poi.openxml4j.opc.TargetMode;
+import org.apache.poi.xslf.XSLFTestDataSamples;
+
+import java.net.URI;
/**
* @author Yegor Kozlov
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFPictureShape.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFPictureShape.java
index 9bd41025fb..61692dba40 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFPictureShape.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFPictureShape.java
@@ -17,15 +17,11 @@
package org.apache.poi.xslf.usermodel;
import junit.framework.TestCase;
+import org.apache.poi.xslf.XSLFTestDataSamples;
-import java.awt.*;
-import java.awt.geom.Ellipse2D;
-import java.awt.geom.GeneralPath;
-import java.util.*;
+import java.util.Arrays;
import java.util.List;
-import org.apache.poi.xslf.XSLFTestDataSamples;
-
/**
* @author Yegor Kozlov
*/
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFShape.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFShape.java
index ecdcdd032d..e6c4728474 100755
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFShape.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFShape.java
@@ -17,7 +17,6 @@
package org.apache.poi.xslf.usermodel;
import junit.framework.TestCase;
-
import org.apache.poi.xslf.XSLFTestDataSamples;
import org.openxmlformats.schemas.drawingml.x2006.main.STTextUnderlineType;
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSheet.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSheet.java
index 88af770fef..d605a05198 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSheet.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSheet.java
@@ -17,7 +17,6 @@
package org.apache.poi.xslf.usermodel;
import junit.framework.TestCase;
-
import org.apache.poi.xslf.XSLFTestDataSamples;
/**
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSimpleShape.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSimpleShape.java
index e4d4d553b0..f5839fd778 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSimpleShape.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSimpleShape.java
@@ -17,16 +17,13 @@
package org.apache.poi.xslf.usermodel;
import junit.framework.TestCase;
-
import org.apache.poi.util.Units;
-import org.apache.poi.xslf.usermodel.LineCap;
-import org.apache.poi.xslf.usermodel.LineDash;
import org.apache.poi.xslf.XSLFTestDataSamples;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTSchemeColor;
import org.openxmlformats.schemas.drawingml.x2006.main.STLineCap;
import org.openxmlformats.schemas.drawingml.x2006.main.STPresetLineDashVal;
-import org.openxmlformats.schemas.drawingml.x2006.main.CTSchemeColor;
-import java.awt.*;
+import java.awt.Color;
/**
* @author Yegor Kozlov
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlide.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlide.java
index d5e7c61c2b..f658e6b555 100755
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlide.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlide.java
@@ -17,14 +17,10 @@
package org.apache.poi.xslf.usermodel;
import junit.framework.TestCase;
-
import org.apache.poi.xslf.XSLFTestDataSamples;
-import org.apache.poi.openxml4j.opc.PackagePart;
import java.awt.Color;
-import java.util.List;
import java.util.Arrays;
-import java.util.regex.Pattern;
/**
* @author Yegor Kozlov
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlideShow.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlideShow.java
index 46e10e45d8..c3057d590f 100755
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlideShow.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlideShow.java
@@ -17,13 +17,12 @@
package org.apache.poi.xslf.usermodel;
import junit.framework.TestCase;
+import org.apache.poi.POIXMLDocumentPart;
+import org.apache.poi.xslf.XSLFTestDataSamples;
import java.awt.Dimension;
import java.util.List;
-import org.apache.poi.POIXMLDocumentPart;
-import org.apache.poi.xslf.XSLFTestDataSamples;
-
/**
* @author Yegor Kozlov
*/
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTable.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTable.java
index a5cdb0d6ca..9a4144752a 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTable.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTable.java
@@ -17,16 +17,12 @@
package org.apache.poi.xslf.usermodel;
import junit.framework.TestCase;
-
-import java.awt.*;
-import java.awt.geom.Ellipse2D;
-import java.awt.geom.GeneralPath;
-import java.util.*;
-import java.util.List;
-
import org.apache.poi.xslf.XSLFTestDataSamples;
import org.openxmlformats.schemas.presentationml.x2006.main.CTGraphicalObjectFrame;
+import java.awt.Color;
+import java.util.List;
+
/**
* @author Yegor Kozlov
*/
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTableStyles.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTableStyles.java
index d1ca86be34..0feff27d25 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTableStyles.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTableStyles.java
@@ -18,15 +18,6 @@ package org.apache.poi.xslf.usermodel;
import junit.framework.TestCase;
-import java.awt.*;
-import java.awt.geom.Ellipse2D;
-import java.awt.geom.GeneralPath;
-import java.util.*;
-import java.util.List;
-
-import org.apache.poi.xslf.XSLFTestDataSamples;
-import org.openxmlformats.schemas.presentationml.x2006.main.CTGraphicalObjectFrame;
-
/**
* @author Yegor Kozlov
*/
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 c426fd15c0..6b9cf596e7 100755
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextParagraph.java
@@ -2,13 +2,9 @@ package org.apache.poi.xslf.usermodel;
import junit.framework.TestCase;
-import java.awt.Rectangle;
import java.awt.Color;
+import java.awt.Rectangle;
import java.awt.geom.Rectangle2D;
-import java.io.FileOutputStream;
-
-import org.apache.poi.xssf.dev.XSSFDump;
-import org.apache.poi.xslf.util.PPTX2PNG;
/**
* Created by IntelliJ IDEA.
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextShape.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextShape.java
index 6347b63ccf..07e64de1eb 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextShape.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextShape.java
@@ -18,11 +18,11 @@ package org.apache.poi.xslf.usermodel;
import junit.framework.TestCase;
import org.apache.poi.xslf.XSLFTestDataSamples;
-import org.openxmlformats.schemas.presentationml.x2006.main.STPlaceholderType;
-import org.openxmlformats.schemas.presentationml.x2006.main.CTPlaceholder;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBodyProperties;
+import org.openxmlformats.schemas.presentationml.x2006.main.CTPlaceholder;
+import org.openxmlformats.schemas.presentationml.x2006.main.STPlaceholderType;
-import java.awt.*;
+import java.awt.Color;
/**
* @author Yegor Kozlov
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTheme.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTheme.java
index b01c25e1d5..650bfcd0cf 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTheme.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTheme.java
@@ -17,8 +17,6 @@
package org.apache.poi.xslf.usermodel;
import junit.framework.TestCase;
-
-
import org.apache.poi.xslf.XSLFTestDataSamples;
import java.awt.Color;