Return-Path: X-Original-To: apmail-poi-commits-archive@minotaur.apache.org Delivered-To: apmail-poi-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 9463578C1 for ; Thu, 11 Aug 2011 08:38:59 +0000 (UTC) Received: (qmail 65067 invoked by uid 500); 11 Aug 2011 08:38:59 -0000 Delivered-To: apmail-poi-commits-archive@poi.apache.org Received: (qmail 64963 invoked by uid 500); 11 Aug 2011 08:38:58 -0000 Mailing-List: contact commits-help@poi.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@poi.apache.org Delivered-To: mailing list commits@poi.apache.org Received: (qmail 64862 invoked by uid 99); 11 Aug 2011 08:38:56 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 11 Aug 2011 08:38:55 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 11 Aug 2011 08:38:45 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id B6A0523889D5 for ; Thu, 11 Aug 2011 08:38:23 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1156539 [3/3] - in /poi/trunk: src/documentation/content/xdocs/ src/examples/src/org/apache/poi/xslf/ src/examples/src/org/apache/poi/xslf/usermodel/ src/ooxml/java/org/apache/poi/util/ src/ooxml/java/org/apache/poi/xslf/ src/ooxml/java/or... Date: Thu, 11 Aug 2011 08:38:20 -0000 To: commits@poi.apache.org From: yegor@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110811083823.B6A0523889D5@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Added: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java?rev=1156539&view=auto ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java (added) +++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java Thu Aug 11 08:38:19 2011 @@ -0,0 +1,334 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.xslf.usermodel; + +import org.apache.poi.util.Beta; +import org.apache.poi.util.Internal; +import org.apache.poi.util.Units; +import org.openxmlformats.schemas.drawingml.x2006.main.CTRegularTextRun; +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.STTextAlignType; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** + * Represents a paragraph of text within the containing text body. + * The paragraph is the highest level text separation mechanism. + * + * @author Yegor Kozlov + * @since POI-3.8 + */ +@Beta +public class XSLFTextParagraph implements Iterable{ + private final CTTextParagraph _p; + private final List _runs; + + XSLFTextParagraph(CTTextParagraph p){ + _p = p; + _runs = new ArrayList(); + for (CTRegularTextRun r : _p.getRList()) { + _runs.add(new XSLFTextRun(r)); + } + } + + public String getText(){ + StringBuilder out = new StringBuilder(); + for (CTRegularTextRun r : _p.getRList()) { + out.append(r.getT()); + } + return out.toString(); + } + + @Internal + public CTTextParagraph getXmlObject(){ + return _p; + } + + public List getTextRuns(){ + return _runs; + } + + public Iterator iterator(){ + return _runs.iterator(); + } + + public XSLFTextRun addNewTextRun(){ + CTRegularTextRun r = _p.addNewR(); + XSLFTextRun run = new XSLFTextRun(r); + _runs.add(run); + return run; + } + + public void addLineBreak(){ + _p.addNewBr(); + } + + /** + * Returns the alignment that is applied to the paragraph. + * + * If this attribute is omitted, then a value of left is implied. + * @return ??? alignment that is applied to the paragraph + */ + public TextAlign getTextAlign(){ + CTTextParagraphProperties pr = _p.getPPr(); + if(pr == null || !pr.isSetAlgn()) return TextAlign.LEFT; + + return TextAlign.values()[pr.getAlgn().intValue() - 1]; + } + + /** + * Specifies the alignment that is to be applied to the paragraph. + * Possible values for this include left, right, centered, justified and distributed, + * see {@link org.apache.poi.xslf.usermodel.TextAlign}. + * + * @param align text align + */ + public void setTextAlign(TextAlign align){ + CTTextParagraphProperties pr = _p.isSetPPr() ? _p.getPPr() : _p.addNewPPr(); + if(align == null) { + if(pr.isSetAlgn()) pr.unsetAlgn(); + } else { + pr.setAlgn(STTextAlignType.Enum.forInt(align.ordinal() + 1)); + } + } + + /** + * Specifies the indent size that will be applied to the first line of text in the paragraph. + * + * @param value the indent in points. The value of -1 unsets the indent attribute + * from the underlying xml bean. + */ + public void setIndent(double value){ + CTTextParagraphProperties pr = _p.isSetPPr() ? _p.getPPr() : _p.addNewPPr(); + if(value == -1) { + if(pr.isSetIndent()) pr.unsetIndent(); + } else { + pr.setIndent(Units.toEMU(value)); + } + } + + /** + * + * @return the indent applied to the first line of text in the paragraph. + */ + public double getIndent(){ + CTTextParagraphProperties pr = _p.getPPr(); + if(pr == null || !pr.isSetIndent()) return 0; + + return Units.toPoints(pr.getIndent()); + } + + /** + * Specifies the left margin of the paragraph. This is specified in addition to the text body + * inset and applies only to this text paragraph. That is the text body Inset and the LeftMargin + * attributes are additive with respect to the text position. + * + * @param value the left margin of the paragraph + */ + public void setLeftMargin(double value){ + CTTextParagraphProperties pr = _p.isSetPPr() ? _p.getPPr() : _p.addNewPPr(); + pr.setMarL(Units.toEMU(value)); + } + + /** + * + * @return the left margin of the paragraph + */ + public double getLeftMargin(){ + CTTextParagraphProperties pr = _p.getPPr(); + if(pr == null || !pr.isSetMarL()) return 0; + + return Units.toPoints(pr.getMarL()); + } + + /** + * This element specifies the vertical line spacing that is to be used within a paragraph. + * This may be specified in two different ways, percentage spacing and font point spacing: + *

+ * If linespacing >= 0, then linespacing is a percentage of normal line height + * If linespacing < 0, the absolute value of linespacing is the spacing in points + *

+ * Examples: + *

+     *      // spacing will be 120% of the size of the largest text on each line
+     *      paragraph.setLineSpacing(120);
+     *
+     *      // spacing will be 200% of the size of the largest text on each line
+     *      paragraph.setLineSpacing(200);
+     *
+     *      // spacing will be 48 points
+     *      paragraph.setLineSpacing(-48.0);
+     * 
+ * + * @param linespacing the vertical line spacing + */ + public void setLineSpacing(double linespacing){ + CTTextParagraphProperties pr = _p.isSetPPr() ? _p.getPPr() : _p.addNewPPr(); + CTTextSpacing spc = CTTextSpacing.Factory.newInstance(); + if(linespacing >= 0) spc.addNewSpcPct().setVal((int)(linespacing*1000)); + else spc.addNewSpcPts().setVal((int)(-linespacing*100)); + pr.setLnSpc(spc); + } + + /** + * Returns the vertical line spacing that is to be used within a paragraph. + * This may be specified in two different ways, percentage spacing and font point spacing: + *

+ * If linespacing >= 0, then linespacing is a percentage of normal line height. + * If linespacing < 0, the absolute value of linespacing is the spacing in points + *

+ * + * @return the vertical line spacing. + */ + public double getLineSpacing(){ + CTTextParagraphProperties pr = _p.getPPr(); + if(pr == null || !pr.isSetLnSpc()) return 100; // TODO fetch from master + + CTTextSpacing spc = pr.getLnSpc(); + if(spc.isSetSpcPct()) return spc.getSpcPct().getVal()*0.001; + else if (spc.isSetSpcPts()) return -spc.getSpcPts().getVal()*0.01; + else return 100; + } + + /** + * Set the amount of vertical white space that will be present before the paragraph. + * This space is specified in either percentage or points: + *

+ * If spaceBefore >= 0, then space is a percentage of normal line height. + * If spaceBefore < 0, the absolute value of linespacing is the spacing in points + *

+ * Examples: + *

+     *      // The paragraph will be formatted to have a spacing before the paragraph text.
+     *      // The spacing will be 200% of the size of the largest text on each line
+     *      paragraph.setSpaceBefore(200);
+     *
+     *      // The spacing will be a size of 48 points
+     *      paragraph.setSpaceBefore(-48.0);
+     * 
+ * + * @param spaceBefore the vertical white space before the paragraph. + */ + public void setSpaceBefore(double spaceBefore){ + CTTextParagraphProperties pr = _p.isSetPPr() ? _p.getPPr() : _p.addNewPPr(); + CTTextSpacing spc = CTTextSpacing.Factory.newInstance(); + if(spaceBefore >= 0) spc.addNewSpcPct().setVal((int)(spaceBefore*1000)); + else spc.addNewSpcPts().setVal((int)(-spaceBefore*100)); + pr.setSpcBef(spc); + } + + /** + * The amount of vertical white space before the paragraph + * This may be specified in two different ways, percentage spacing and font point spacing: + *

+ * If spaceBefore >= 0, then space is a percentage of normal line height. + * If spaceBefore < 0, the absolute value of linespacing is the spacing in points + *

+ * + * @return the vertical white space before the paragraph + */ + public double getSpaceBefore(){ + CTTextParagraphProperties pr = _p.getPPr(); + if(pr == null || !pr.isSetSpcBef()) return 0; // TODO fetch from master + + CTTextSpacing spc = pr.getSpcBef(); + if(spc.isSetSpcPct()) return spc.getSpcPct().getVal()*0.001; + else if (spc.isSetSpcPts()) return -spc.getSpcPts().getVal()*0.01; + else return 0; + } + + /** + * Set the amount of vertical white space that will be present after the paragraph. + * This space is specified in either percentage or points: + *

+ * If spaceAfter >= 0, then space is a percentage of normal line height. + * If spaceAfter < 0, the absolute value of linespacing is the spacing in points + *

+ * Examples: + *

+     *      // The paragraph will be formatted to have a spacing after the paragraph text.
+     *      // The spacing will be 200% of the size of the largest text on each line
+     *      paragraph.setSpaceAfter(200);
+     *
+     *      // The spacing will be a size of 48 points
+     *      paragraph.setSpaceAfter(-48.0);
+     * 
+ * + * @param spaceAfter the vertical white space after the paragraph. + */ + public void setSpaceAfter(double spaceAfter){ + CTTextParagraphProperties pr = _p.isSetPPr() ? _p.getPPr() : _p.addNewPPr(); + CTTextSpacing spc = CTTextSpacing.Factory.newInstance(); + if(spaceAfter >= 0) spc.addNewSpcPct().setVal((int)(spaceAfter*1000)); + else spc.addNewSpcPts().setVal((int)(-spaceAfter*100)); + pr.setSpcAft(spc); + } + + /** + * The amount of vertical white space after the paragraph + * This may be specified in two different ways, percentage spacing and font point spacing: + *

+ * If spaceBefore >= 0, then space is a percentage of normal line height. + * If spaceBefore < 0, the absolute value of linespacing is the spacing in points + *

+ * + * @return the vertical white space after the paragraph + */ + public double getSpaceAfter(){ + CTTextParagraphProperties pr = _p.getPPr(); + if(pr == null || !pr.isSetSpcAft()) return 0; // TODO fetch from master + + CTTextSpacing spc = pr.getSpcAft(); + if(spc.isSetSpcPct()) return spc.getSpcPct().getVal()*0.001; + else if (spc.isSetSpcPts()) return -spc.getSpcPts().getVal()*0.01; + else return 0; + } + + /** + * Specifies the particular level text properties that this paragraph will follow. + * The value for this attribute formats the text according to the corresponding level + * paragraph properties defined in the SlideMaster. + * + * @param level the level (0 ... 4) + */ + public void setLevel(int level){ + CTTextParagraphProperties pr = _p.isSetPPr() ? _p.getPPr() : _p.addNewPPr(); + + pr.setLvl(level); + } + + /** + * + * @return the text level of this paragraph. Default is 0. + */ + public int getLevel(){ + CTTextParagraphProperties pr = _p.getPPr(); + if(pr == null) return 0; + + return pr.getLvl(); + + } + + @Override + public String toString(){ + return "[" + getClass() + "]" + getText(); + } +} Propchange: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java ------------------------------------------------------------------------------ svn:executable = * Added: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextRun.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextRun.java?rev=1156539&view=auto ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextRun.java (added) +++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextRun.java Thu Aug 11 08:38:19 2011 @@ -0,0 +1,202 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.xslf.usermodel; + +import org.apache.poi.util.Beta; +import org.openxmlformats.schemas.drawingml.x2006.main.CTRegularTextRun; +import org.openxmlformats.schemas.drawingml.x2006.main.CTSRgbColor; +import org.openxmlformats.schemas.drawingml.x2006.main.CTSolidColorFillProperties; +import org.openxmlformats.schemas.drawingml.x2006.main.CTTextCharacterProperties; +import org.openxmlformats.schemas.drawingml.x2006.main.CTTextFont; +import org.openxmlformats.schemas.drawingml.x2006.main.STTextStrikeType; +import org.openxmlformats.schemas.drawingml.x2006.main.STTextUnderlineType; + +import java.awt.*; + +/** + * Represents a run of text within the containing text body. The run element is the + * lowest level text separation mechanism within a text body. + * + * @author Yegor Kozlov + */ +@Beta +public class XSLFTextRun { + private final CTRegularTextRun _r; + + XSLFTextRun(CTRegularTextRun r){ + _r = r; + } + + public String getText(){ + return _r.getT(); + } + + public void setText(String text){ + _r.setT(text); + } + + public CTRegularTextRun getXmlObject(){ + return _r; + } + + public void setFontColor(Color color){ + CTTextCharacterProperties rPr = getRpR(); + CTSolidColorFillProperties fill = rPr.isSetSolidFill() ? rPr.getSolidFill() : rPr.addNewSolidFill(); + CTSRgbColor clr = fill.isSetSrgbClr() ? fill.getSrgbClr() : fill.addNewSrgbClr(); + clr.setVal(new byte[]{(byte)color.getRed(), (byte)color.getGreen(), (byte)color.getBlue()}); + } + + /** + * + * @param fontSize font size in points. + * The value of -1 unsets the Sz attribyte from the underlying xml bean + */ + public void setFontSize(double fontSize){ + CTTextCharacterProperties rPr = getRpR(); + if(fontSize == -1.0) { + if(rPr.isSetSz()) rPr.unsetSz(); + } else { + rPr.setSz((int)(100*fontSize)); + } + } + + /** + * @return font size in points or -1 if font size is not set. + */ + public double getFontSize(){ + if(!_r.isSetRPr()) return -1; + + return _r.getRPr().getSz()*0.01; + } + + /** + * Specifies the typeface, or name of the font that is to be used for this text run. + * + * @param typeface the font to apply to this text run. + * The value of null unsets the Typeface attrubute from the underlying xml. + */ + public void setFontFamily(String typeface){ + setFontFamily(typeface, (byte)-1, (byte)-1, false); + } + + public void setFontFamily(String typeface, byte charset, byte pictAndFamily, boolean isSymbol){ + CTTextCharacterProperties rPr = getRpR(); + + if(typeface == null){ + if(rPr.isSetLatin()) rPr.unsetLatin(); + if(rPr.isSetCs()) rPr.unsetCs(); + if(rPr.isSetSym()) rPr.unsetSym(); + } else { + if(isSymbol){ + CTTextFont font = rPr.isSetSym() ? rPr.getSym() : rPr.addNewSym(); + font.setTypeface(typeface); + } else { + CTTextFont latin = rPr.isSetLatin() ? rPr.getLatin() : rPr.addNewLatin(); + latin.setTypeface(typeface); + if(charset != -1) latin.setCharset(charset); + if(pictAndFamily != -1) latin.setPitchFamily(pictAndFamily); + } + } + } + + /** + * @return font family or null if niot set + */ + public String getFontFamily(){ + if(!_r.isSetRPr() || !_r.getRPr().isSetLatin()) return null; + + return _r.getRPr().getLatin().getTypeface(); + } + + /** + * Specifies whether a run of text will be formatted as strikethrough text. + * + * @param strike whether a run of text will be formatted as strikethrough text. + */ + public void setStrikethrough(boolean strike){ + getRpR().setStrike(strike ? STTextStrikeType.SNG_STRIKE : STTextStrikeType.NO_STRIKE); + } + + /** + * @return whether a run of text will be formatted as strikethrough text. Default is false. + */ + public boolean isStrikethrough(){ + if(!_r.isSetRPr()) return false; + + return _r.getRPr().getStrike() == STTextStrikeType.SNG_STRIKE; + } + + /** + * Specifies whether this run of text will be formatted as bold text + * + * @param bold whether this run of text will be formatted as bold text + */ + public void setBold(boolean bold){ + getRpR().setB(bold); + } + + /** + * @return whether this run of text is formatted as bold text + */ + public boolean isBold(){ + if(!_r.isSetRPr()) return false; + + return _r.getRPr().getB(); + } + + /** + * @param italic whether this run of text is formatted as italic text + */ + public void setItalic(boolean italic){ + getRpR().setI(italic); + } + + /** + * @return whether this run of text is formatted as italic text + */ + public boolean isItalic(){ + if(!_r.isSetRPr()) return false; + + return _r.getRPr().getI(); + } + + /** + * @param underline whether this run of text is formatted as underlined text + */ + public void setUnderline(boolean underline){ + getRpR().setU(underline ? STTextUnderlineType.SNG : STTextUnderlineType.NONE); + } + + /** + * @return whether this run of text is formatted as underlined text + */ + public boolean isUnderline(){ + if(!_r.isSetRPr() || !_r.getRPr().isSetU()) return false; + + return _r.getRPr().getU() != STTextUnderlineType.NONE; + } + + protected CTTextCharacterProperties getRpR(){ + return _r.isSetRPr() ? _r.getRPr() : _r.addNewRPr(); + } + + @Override + public String toString(){ + return "[" + getClass() + "]" + getText(); + } + +} \ No newline at end of file Propchange: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextRun.java ------------------------------------------------------------------------------ svn:executable = * Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/XSLFTestDataSamples.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/XSLFTestDataSamples.java?rev=1156539&r1=1156538&r2=1156539&view=diff ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/XSLFTestDataSamples.java (original) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/XSLFTestDataSamples.java Thu Aug 11 08:38:19 2011 @@ -41,7 +41,7 @@ public class XSLFTestDataSamples { public static XMLSlideShow writeOutAndReadBack(XMLSlideShow doc) { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(4096); - doc._getXSLFSlideShow().write(baos); + doc.write(baos); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); return new XMLSlideShow(OPCPackage.open(bais)); } catch (Exception e) { Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFAutoShape.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFAutoShape.java?rev=1156539&view=auto ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFAutoShape.java (added) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFAutoShape.java Thu Aug 11 08:38:19 2011 @@ -0,0 +1,267 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.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; + +/** + * @author Yegor Kozlov + */ +public class TestXSLFAutoShape extends TestCase { + public void testTextBodyProperies() { + XMLSlideShow ppt = new XMLSlideShow(); + XSLFSlide slide = ppt.createSlide(); + + XSLFAutoShape shape = slide.createAutoShape(); + shape.addNewTextParagraph().addNewTextRun().setText("POI"); + + // margins + assertEquals(-1., shape.getMarginBottom()); + assertEquals(-1., shape.getMarginTop()); + assertEquals(-1., shape.getMarginLeft()); + assertEquals(-1., shape.getMarginRight()); + + shape.setMarginBottom(1.0); + assertEquals(1.0, shape.getMarginBottom()); + shape.setMarginTop(2.0); + assertEquals(2.0, shape.getMarginTop()); + shape.setMarginLeft(3.0); + assertEquals(3.0, shape.getMarginLeft()); + shape.setMarginRight(4.0); + assertEquals(4.0, shape.getMarginRight()); + + shape.setMarginBottom(0.0); + assertEquals(0.0, shape.getMarginBottom()); + shape.setMarginTop(0.0); + assertEquals(0.0, shape.getMarginTop()); + shape.setMarginLeft(0.0); + assertEquals(0.0, shape.getMarginLeft()); + shape.setMarginRight(0.0); + assertEquals(0.0, shape.getMarginRight()); + + shape.setMarginBottom(-1); + assertEquals(-1., shape.getMarginBottom()); + shape.setMarginTop(-1); + assertEquals(-1.0, shape.getMarginTop()); + shape.setMarginLeft(-1); + assertEquals(-1.0, shape.getMarginLeft()); + shape.setMarginRight(-1); + assertEquals(-1.0, shape.getMarginRight()); + + // shape + assertFalse(shape.getWordWrap()); + shape.setWordWrap(true); + assertTrue(shape.getWordWrap()); + shape.setWordWrap(false); + assertFalse(shape.getWordWrap()); + + // shape + assertEquals(TextAutofit.NORMAL, shape.getTextAutofit()); + shape.setTextAutofit(TextAutofit.NONE); + assertEquals(TextAutofit.NONE, shape.getTextAutofit()); + shape.setTextAutofit(TextAutofit.SHAPE); + assertEquals(TextAutofit.SHAPE, shape.getTextAutofit()); + shape.setTextAutofit(TextAutofit.NORMAL); + assertEquals(TextAutofit.NORMAL, shape.getTextAutofit()); + + assertEquals(VerticalAlignment.TOP, shape.getVerticalAlignment()); + shape.setVerticalAlignment(VerticalAlignment.BOTTOM); + assertEquals(VerticalAlignment.BOTTOM, shape.getVerticalAlignment()); + shape.setVerticalAlignment(VerticalAlignment.MIDDLE); + assertEquals(VerticalAlignment.MIDDLE, shape.getVerticalAlignment()); + shape.setVerticalAlignment(null); + assertEquals(VerticalAlignment.TOP, shape.getVerticalAlignment()); + + assertEquals(TextDirection.HORIZONTAL, shape.getTextDirection()); + shape.setTextDirection(TextDirection.VERTICAL); + assertEquals(TextDirection.VERTICAL, shape.getTextDirection()); + shape.setTextDirection(null); + assertEquals(TextDirection.HORIZONTAL, shape.getTextDirection()); + } + + public void testTextParagraph() { + XMLSlideShow ppt = new XMLSlideShow(); + XSLFSlide slide = ppt.createSlide(); + assertEquals(0, slide.getShapes().length); + + XSLFAutoShape shape = slide.createAutoShape(); + assertEquals(0, shape.getTextParagraphs().size()); + XSLFTextParagraph p = shape.addNewTextParagraph(); + assertEquals(1, shape.getTextParagraphs().size()); + + assertEquals(0., p.getIndent()); + assertEquals(0., p.getLeftMargin()); + assertEquals(100., p.getLineSpacing()); + assertEquals(0., p.getSpaceAfter()); + assertEquals(0., p.getSpaceBefore()); + assertEquals(0, p.getLevel()); + + p.setIndent(2.0); + assertEquals(2.0, p.getIndent()); + assertTrue(p.getXmlObject().getPPr().isSetIndent()); + p.setIndent(-1); + assertEquals(0.0, p.getIndent()); + assertFalse(p.getXmlObject().getPPr().isSetIndent()); + p.setIndent(10.0); + assertEquals(10., p.getIndent()); + assertTrue(p.getXmlObject().getPPr().isSetIndent()); + + + assertFalse(p.getXmlObject().getPPr().isSetLvl()); + p.setLevel(1); + assertEquals(1, p.getLevel()); + assertTrue(p.getXmlObject().getPPr().isSetLvl()); + p.setLevel(2); + assertEquals(2, p.getLevel()); + + p.setLeftMargin(2.0); + assertEquals(2.0, p.getLeftMargin()); + assertTrue(p.getXmlObject().getPPr().isSetMarL()); + p.setLeftMargin(10.0); + assertEquals(10., p.getLeftMargin()); + assertEquals(Units.toEMU(10), p.getXmlObject().getPPr().getMarL()); + + + assertFalse(p.getXmlObject().getPPr().isSetSpcAft()); + p.setSpaceAfter(200); + assertEquals(200000, p.getXmlObject().getPPr().getSpcAft().getSpcPct().getVal()); + assertFalse(p.getXmlObject().getPPr().getSpcAft().isSetSpcPts()); + p.setSpaceAfter(100); + assertEquals(100000, p.getXmlObject().getPPr().getSpcAft().getSpcPct().getVal()); + assertFalse(p.getXmlObject().getPPr().getSpcAft().isSetSpcPts()); + p.setSpaceAfter(-20); + assertEquals(2000, p.getXmlObject().getPPr().getSpcAft().getSpcPts().getVal()); + assertFalse(p.getXmlObject().getPPr().getSpcAft().isSetSpcPct()); + p.setSpaceAfter(-10); + assertEquals(1000, p.getXmlObject().getPPr().getSpcAft().getSpcPts().getVal()); + assertFalse(p.getXmlObject().getPPr().getSpcAft().isSetSpcPct()); + + assertFalse(p.getXmlObject().getPPr().isSetSpcBef()); + p.setSpaceBefore(200); + assertEquals(200000, p.getXmlObject().getPPr().getSpcBef().getSpcPct().getVal()); + assertFalse(p.getXmlObject().getPPr().getSpcBef().isSetSpcPts()); + p.setSpaceBefore(100); + assertEquals(100000, p.getXmlObject().getPPr().getSpcBef().getSpcPct().getVal()); + assertFalse(p.getXmlObject().getPPr().getSpcBef().isSetSpcPts()); + p.setSpaceBefore(-20); + assertEquals(2000, p.getXmlObject().getPPr().getSpcBef().getSpcPts().getVal()); + assertFalse(p.getXmlObject().getPPr().getSpcBef().isSetSpcPct()); + p.setSpaceBefore(-10); + assertEquals(1000, p.getXmlObject().getPPr().getSpcBef().getSpcPts().getVal()); + assertFalse(p.getXmlObject().getPPr().getSpcBef().isSetSpcPct()); + + assertFalse(p.getXmlObject().getPPr().isSetLnSpc()); + p.setLineSpacing(200); + assertEquals(200000, p.getXmlObject().getPPr().getLnSpc().getSpcPct().getVal()); + assertFalse(p.getXmlObject().getPPr().getLnSpc().isSetSpcPts()); + p.setLineSpacing(100); + assertEquals(100000, p.getXmlObject().getPPr().getLnSpc().getSpcPct().getVal()); + assertFalse(p.getXmlObject().getPPr().getLnSpc().isSetSpcPts()); + p.setLineSpacing(-20); + assertEquals(2000, p.getXmlObject().getPPr().getLnSpc().getSpcPts().getVal()); + assertFalse(p.getXmlObject().getPPr().getLnSpc().isSetSpcPct()); + p.setLineSpacing(-10); + assertEquals(1000, p.getXmlObject().getPPr().getLnSpc().getSpcPts().getVal()); + assertFalse(p.getXmlObject().getPPr().getLnSpc().isSetSpcPct()); + + assertFalse(p.getXmlObject().getPPr().isSetAlgn()); + assertEquals(TextAlign.LEFT, p.getTextAlign()); + p.setTextAlign(TextAlign.LEFT); + assertTrue(p.getXmlObject().getPPr().isSetAlgn()); + assertEquals(TextAlign.LEFT, p.getTextAlign()); + p.setTextAlign(TextAlign.RIGHT); + assertEquals(TextAlign.RIGHT, p.getTextAlign()); + p.setTextAlign(TextAlign.JUSTIFY); + assertEquals(TextAlign.JUSTIFY, p.getTextAlign()); + p.setTextAlign(null); + assertEquals(TextAlign.LEFT, p.getTextAlign()); + assertFalse(p.getXmlObject().getPPr().isSetAlgn()); + } + + public void testTextRun() { + XMLSlideShow ppt = new XMLSlideShow(); + XSLFSlide slide = ppt.createSlide(); + + XSLFAutoShape shape = slide.createAutoShape(); + assertEquals(0, shape.getTextParagraphs().size()); + XSLFTextParagraph p = shape.addNewTextParagraph(); + assertEquals(1, shape.getTextParagraphs().size()); + assertEquals(0, p.getTextRuns().size()); + XSLFTextRun r = p.addNewTextRun(); + assertEquals(1, p.getTextRuns().size()); + assertSame(r, p.getTextRuns().get(0)); + + assertEquals(-1.0, r.getFontSize()); + assertFalse(r.getXmlObject().isSetRPr()); + r.setFontSize(10.0); + assertTrue(r.getXmlObject().isSetRPr()); + assertEquals(1000, r.getXmlObject().getRPr().getSz()); + r.setFontSize(12.5); + assertEquals(1250, r.getXmlObject().getRPr().getSz()); + r.setFontSize(-1); + assertFalse(r.getXmlObject().getRPr().isSetSz()); + + assertFalse(r.getXmlObject().getRPr().isSetLatin()); + assertNull(r.getFontFamily()); + r.setFontFamily(null); + assertNull(r.getFontFamily()); + r.setFontFamily("Arial"); + assertEquals("Arial", r.getFontFamily()); + assertEquals("Arial", r.getXmlObject().getRPr().getLatin().getTypeface()); + r.setFontFamily("Symbol"); + assertEquals("Symbol", r.getFontFamily()); + assertEquals("Symbol", r.getXmlObject().getRPr().getLatin().getTypeface()); + r.setFontFamily(null); + assertNull(r.getFontFamily()); + assertFalse(r.getXmlObject().getRPr().isSetLatin()); + + assertFalse(r.isStrikethrough()); + assertFalse(r.getXmlObject().getRPr().isSetStrike()); + r.setStrikethrough(true); + assertTrue(r.isStrikethrough()); + assertEquals(STTextStrikeType.SNG_STRIKE, r.getXmlObject().getRPr().getStrike()); + + assertFalse(r.isBold()); + assertFalse(r.getXmlObject().getRPr().isSetB()); + r.setBold(true); + assertTrue(r.isBold()); + assertEquals(true, r.getXmlObject().getRPr().getB()); + + assertFalse(r.isItalic()); + assertFalse(r.getXmlObject().getRPr().isSetI()); + r.setItalic(true); + assertTrue(r.isItalic()); + assertEquals(true, r.getXmlObject().getRPr().getI()); + + assertFalse(r.isUnderline()); + assertFalse(r.getXmlObject().getRPr().isSetU()); + r.setUnderline(true); + assertTrue(r.isUnderline()); + assertEquals(STTextUnderlineType.SNG, r.getXmlObject().getRPr().getU()); + + r.setText("Apache"); + assertEquals("Apache", r.getText()); + r.setText("POI"); + assertEquals("POI", r.getText()); + r.setText(null); + assertNull(r.getText()); + } +} \ No newline at end of file Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFAutoShape.java ------------------------------------------------------------------------------ svn:executable = * Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFConnectorShape.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFConnectorShape.java?rev=1156539&view=auto ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFConnectorShape.java (added) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFConnectorShape.java Thu Aug 11 08:38:19 2011 @@ -0,0 +1,117 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.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.STLineEndType; +import org.openxmlformats.schemas.drawingml.x2006.main.STLineEndWidth; +import org.openxmlformats.schemas.drawingml.x2006.main.STLineEndLength; + +import java.awt.*; + +/** + * @author Yegor Kozlov + */ +public class TestXSLFConnectorShape extends TestCase { + + public void testLineDecorations() { + XMLSlideShow ppt = new XMLSlideShow(); + XSLFSlide slide = ppt.createSlide(); + + XSLFConnectorShape shape = slide.createConnector(); + assertEquals(1, slide.getShapes().length); + + assertFalse(shape.getSpPr().getLn().isSetHeadEnd()); + assertFalse(shape.getSpPr().getLn().isSetTailEnd()); + + // line decorations + assertEquals(LineDecoration.NONE, shape.getLineHeadDecoration()); + assertEquals(LineDecoration.NONE, shape.getLineTailDecoration()); + shape.setLineHeadDecoration(null); + shape.setLineTailDecoration(null); + assertEquals(LineDecoration.NONE, shape.getLineHeadDecoration()); + assertEquals(LineDecoration.NONE, shape.getLineTailDecoration()); + assertFalse(shape.getSpPr().getLn().getHeadEnd().isSetType()); + assertFalse(shape.getSpPr().getLn().getTailEnd().isSetType()); + + shape.setLineHeadDecoration(LineDecoration.ARROW); + shape.setLineTailDecoration(LineDecoration.DIAMOND); + assertEquals(LineDecoration.ARROW, shape.getLineHeadDecoration()); + assertEquals(LineDecoration.DIAMOND, shape.getLineTailDecoration()); + assertEquals(STLineEndType.ARROW, shape.getSpPr().getLn().getHeadEnd().getType()); + assertEquals(STLineEndType.DIAMOND, shape.getSpPr().getLn().getTailEnd().getType()); + + shape.setLineHeadDecoration(LineDecoration.DIAMOND); + shape.setLineTailDecoration(LineDecoration.ARROW); + assertEquals(LineDecoration.DIAMOND, shape.getLineHeadDecoration()); + assertEquals(LineDecoration.ARROW, shape.getLineTailDecoration()); + assertEquals(STLineEndType.DIAMOND, shape.getSpPr().getLn().getHeadEnd().getType()); + assertEquals(STLineEndType.ARROW, shape.getSpPr().getLn().getTailEnd().getType()); + + // line end width + assertEquals(null, shape.getLineHeadWidth()); + assertEquals(null, shape.getLineTailWidth()); + shape.setLineHeadWidth(null); + shape.setLineHeadWidth(null); + assertEquals(null, shape.getLineHeadWidth()); + assertEquals(null, shape.getLineTailWidth()); + assertFalse(shape.getSpPr().getLn().getHeadEnd().isSetW()); + assertFalse(shape.getSpPr().getLn().getTailEnd().isSetW()); + shape.setLineHeadWidth(LineEndWidth.LARGE); + shape.setLineTailWidth(LineEndWidth.MEDIUM); + assertEquals(LineEndWidth.LARGE, shape.getLineHeadWidth()); + assertEquals(LineEndWidth.MEDIUM, shape.getLineTailWidth()); + assertEquals(STLineEndWidth.LG, shape.getSpPr().getLn().getHeadEnd().getW()); + assertEquals(STLineEndWidth.MED, shape.getSpPr().getLn().getTailEnd().getW()); + shape.setLineHeadWidth(LineEndWidth.MEDIUM); + shape.setLineTailWidth(LineEndWidth.LARGE); + assertEquals(LineEndWidth.MEDIUM, shape.getLineHeadWidth()); + assertEquals(LineEndWidth.LARGE, shape.getLineTailWidth()); + assertEquals(STLineEndWidth.MED, shape.getSpPr().getLn().getHeadEnd().getW()); + assertEquals(STLineEndWidth.LG, shape.getSpPr().getLn().getTailEnd().getW()); + + // line end length + assertEquals(null, shape.getLineHeadLength()); + assertEquals(null, shape.getLineTailLength()); + shape.setLineHeadLength(null); + shape.setLineTailLength(null); + assertEquals(null, shape.getLineHeadLength()); + assertEquals(null, shape.getLineTailLength()); + assertFalse(shape.getSpPr().getLn().getHeadEnd().isSetLen()); + assertFalse(shape.getSpPr().getLn().getTailEnd().isSetLen()); + shape.setLineHeadLength(LineEndLength.LARGE); + shape.setLineTailLength(LineEndLength.MEDIUM); + assertEquals(LineEndLength.LARGE, shape.getLineHeadLength()); + assertEquals(LineEndLength.MEDIUM, shape.getLineTailLength()); + assertEquals(STLineEndLength.LG, shape.getSpPr().getLn().getHeadEnd().getLen()); + assertEquals(STLineEndLength.MED, shape.getSpPr().getLn().getTailEnd().getLen()); + shape.setLineHeadLength(LineEndLength.MEDIUM); + shape.setLineTailLength(LineEndLength.LARGE); + assertEquals(LineEndLength.MEDIUM, shape.getLineHeadLength()); + assertEquals(LineEndLength.LARGE, shape.getLineTailLength()); + assertEquals(STLineEndLength.MED, shape.getSpPr().getLn().getHeadEnd().getLen()); + assertEquals(STLineEndLength.LG, shape.getSpPr().getLn().getTailEnd().getLen()); + + } + +} \ No newline at end of file Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFFreeformShape.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFFreeformShape.java?rev=1156539&view=auto ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFFreeformShape.java (added) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFFreeformShape.java Thu Aug 11 08:38:19 2011 @@ -0,0 +1,50 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.xslf.usermodel; + +import junit.framework.TestCase; + +import java.awt.*; +import java.awt.geom.Ellipse2D; +import java.awt.geom.GeneralPath; + +/** + * @author Yegor Kozlov + */ +public class TestXSLFFreeformShape extends TestCase { + + public void testSetPath() { + XMLSlideShow ppt = new XMLSlideShow(); + XSLFSlide slide = ppt.createSlide(); + XSLFFreeformShape shape1 = slide.createFreeform(); + // comples path consisting of a rectangle and an ellipse inside it + GeneralPath path1 = new GeneralPath(new Rectangle(150, 150, 300, 300)); + path1.append(new Ellipse2D.Double(200, 200, 100, 50), false); + shape1.setPath(path1); + + GeneralPath path2 = shape1.getPath(); + + // YK: how to compare the original path1 and the value returned by XSLFFreeformShape.getPath() ? + // one way is to create another XSLFFreeformShape from path2 and compare the resulting xml + assertEquals(path1.getBounds2D(), path2.getBounds2D()); + + XSLFFreeformShape shape2 = slide.createFreeform(); + shape2.setPath(path2); + + assertEquals(shape1.getSpPr().getCustGeom().toString(), shape2.getSpPr().getCustGeom().toString()); + } +} \ No newline at end of file Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFFreeformShape.java ------------------------------------------------------------------------------ svn:executable = * Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFGroupShape.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFGroupShape.java?rev=1156539&view=auto ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFGroupShape.java (added) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFGroupShape.java Thu Aug 11 08:38:19 2011 @@ -0,0 +1,99 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.xslf.usermodel; + +import junit.framework.TestCase; + +import java.awt.*; +import java.awt.geom.Rectangle2D; + +/** + * @author Yegor Kozlov + */ +public class TestXSLFGroupShape extends TestCase { + + public void testCreateShapes() { + XMLSlideShow ppt = new XMLSlideShow(); + XSLFSlide slide = ppt.createSlide(); + + ppt.setPageSize(new Dimension(792, 612)); + + XSLFGroupShape group = slide.createGroup(); + assertEquals(1, slide.getShapes().length); + + Rectangle2D interior = new Rectangle2D.Double(-10, -10, 20, 20); + group.setInteriorAnchor(interior); + assertEquals(interior, group.getInteriorAnchor()); + + Rectangle2D anchor = new Rectangle2D.Double(0, 0, 792, 612); + group.setAnchor(anchor); + assertEquals(anchor, group.getAnchor()); + + assertEquals(0, group.getShapes().length); + + XSLFTextBox shape1 = group.createTextBox(); + assertEquals(1, group.getShapes().length); + assertSame(shape1, group.getShapes()[0]); + assertEquals(3, shape1.getShapeId()); + + XSLFAutoShape shape2 = group.createAutoShape(); + assertEquals(2, group.getShapes().length); + assertSame(shape1, group.getShapes()[0]); + assertSame(shape2, group.getShapes()[1]); + assertEquals(4, shape2.getShapeId()); + + XSLFConnectorShape shape3 = group.createConnector(); + assertEquals(3, group.getShapes().length); + assertSame(shape3, group.getShapes()[2]); + assertEquals(5, shape3.getShapeId()); + + XSLFGroupShape shape4 = group.createGroup(); + assertEquals(4, group.getShapes().length); + assertSame(shape4, group.getShapes()[3]); + assertEquals(6, shape4.getShapeId()); + + group.removeShape(shape2); + assertEquals(3, group.getShapes().length); + assertSame(shape1, group.getShapes()[0]); + assertSame(shape3, group.getShapes()[1]); + assertSame(shape4, group.getShapes()[2]); + + group.removeShape(shape3); + assertEquals(2, group.getShapes().length); + assertSame(shape1, group.getShapes()[0]); + assertSame(shape4, group.getShapes()[1]); + + group.removeShape(shape1); + group.removeShape(shape4); + assertEquals(0, group.getShapes().length); + } + + public void testRemoveShapes() { + XMLSlideShow ppt = new XMLSlideShow(); + XSLFSlide slide = ppt.createSlide(); + + XSLFGroupShape group1 = slide.createGroup(); + group1.createTextBox(); + XSLFGroupShape group2 = slide.createGroup(); + group2.createTextBox(); + XSLFGroupShape group3 = slide.createGroup(); + slide.removeShape(group1); + slide.removeShape(group2); + slide.removeShape(group3); + + } +} \ No newline at end of file Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFGroupShape.java ------------------------------------------------------------------------------ svn:executable = * Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFPictureShape.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFPictureShape.java?rev=1156539&view=auto ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFPictureShape.java (added) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFPictureShape.java Thu Aug 11 08:38:19 2011 @@ -0,0 +1,65 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.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; + +/** + * @author Yegor Kozlov + */ +public class TestXSLFPictureShape extends TestCase { + + public void testCreate() { + XMLSlideShow ppt = new XMLSlideShow(); + assertEquals(0, ppt.getAllPictures().size()); + byte[] data1 = new byte[100]; + int idx1 = ppt.addPicture(data1, XSLFPictureData.PICTURE_TYPE_JPEG); + assertEquals(0, idx1); + assertEquals(1, ppt.getAllPictures().size()); + + XSLFSlide slide = ppt.createSlide(); + XSLFPictureShape shape1 = slide.createPicture(idx1); + assertNotNull(shape1.getPictureData()); + assertTrue(Arrays.equals(data1, shape1.getPictureData().getData())); + + byte[] data2 = new byte[200]; + int idx2 = ppt.addPicture(data2, XSLFPictureData.PICTURE_TYPE_PNG); + XSLFPictureShape shape2 = slide.createPicture(idx2); + assertNotNull(shape2.getPictureData()); + assertEquals(1, idx2); + assertEquals(2, ppt.getAllPictures().size()); + assertTrue(Arrays.equals(data2, shape2.getPictureData().getData())); + + ppt = XSLFTestDataSamples.writeOutAndReadBack(ppt); + List pics = ppt.getAllPictures(); + assertEquals(2, pics.size()); + assertTrue(Arrays.equals(data1, pics.get(0).getData())); + assertTrue(Arrays.equals(data2, pics.get(1).getData())); + + XSLFShape[] shapes = ppt.getSlides()[0].getShapes(); + assertTrue(Arrays.equals(data1, ((XSLFPictureShape)shapes[0]).getPictureData().getData())); + assertTrue(Arrays.equals(data2, ((XSLFPictureShape)shapes[1]).getPictureData().getData())); + } +} \ No newline at end of file Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFShape.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFShape.java?rev=1156539&view=auto ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFShape.java (added) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFShape.java Thu Aug 11 08:38:19 2011 @@ -0,0 +1,101 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.xslf.usermodel; + +import junit.framework.TestCase; + +import org.apache.poi.xslf.XSLFTestDataSamples; +import org.openxmlformats.schemas.drawingml.x2006.main.STTextUnderlineType; + +import java.util.List; + +/** + * @author Yegor Kozlov + */ +public class TestXSLFShape extends TestCase { + + public void testReadTextShapes() { + XMLSlideShow ppt = XSLFTestDataSamples.openSampleDocument("shapes.pptx"); + XSLFSlide[] slides = ppt.getSlides(); + assertEquals(3, slides.length); + + XSLFSlide slide1 = slides[0]; + XSLFShape[] shapes1 = slide1.getShapes(); + assertEquals(7, shapes1.length); + assertEquals("TextBox 3", shapes1[0].getShapeName()); + XSLFAutoShape sh0 = (XSLFAutoShape) shapes1[0]; + assertEquals("Learning PPTX", sh0.getText()); + List paragraphs0 = sh0.getTextParagraphs(); + assertEquals(1, paragraphs0.size()); + XSLFTextParagraph p0 = paragraphs0.get(0); + assertEquals("Learning PPTX", p0.getText()); + assertEquals(1, p0.getTextRuns().size()); + XSLFTextRun r0 = p0.getTextRuns().get(0); + assertEquals("Learning PPTX", r0.getText()); + + XSLFSlide slide2 = slides[1]; + XSLFShape[] shapes2 = slide2.getShapes(); + assertTrue(shapes2[0] instanceof XSLFAutoShape); + assertEquals("PPTX Title", ((XSLFAutoShape) shapes2[0]).getText()); + XSLFAutoShape sh1 = (XSLFAutoShape) shapes2[0]; + List paragraphs1 = sh1.getTextParagraphs(); + assertEquals(1, paragraphs1.size()); + XSLFTextParagraph p1 = paragraphs1.get(0); + assertEquals("PPTX Title", p1.getText()); + List r2 = paragraphs1.get(0).getTextRuns(); + assertEquals(2, r2.size()); + assertEquals("PPTX ", r2.get(0).getText()); + assertEquals("Title", r2.get(1).getText()); + // Title is underlined + assertEquals(STTextUnderlineType.SNG, r2.get(1).getXmlObject().getRPr().getU()); + + + assertTrue(shapes2[1] instanceof XSLFAutoShape); + assertEquals("Subtitle\nAnd second line", ((XSLFAutoShape) shapes2[1]).getText()); + XSLFAutoShape sh2 = (XSLFAutoShape) shapes2[1]; + List paragraphs2 = sh2.getTextParagraphs(); + assertEquals(2, paragraphs2.size()); + assertEquals("Subtitle", paragraphs2.get(0).getText()); + assertEquals("And second line", paragraphs2.get(1).getText()); + + assertEquals(1, paragraphs2.get(0).getTextRuns().size()); + assertEquals(1, paragraphs2.get(1).getTextRuns().size()); + + assertEquals("Subtitle", paragraphs2.get(0).getTextRuns().get(0).getText()); + assertTrue(paragraphs2.get(0).getTextRuns().get(0).getXmlObject().getRPr().getB()); + assertEquals("And second line", paragraphs2.get(1).getTextRuns().get(0).getText()); + } + + public void testCreateShapes() { + XMLSlideShow ppt = new XMLSlideShow(); + XSLFSlide slide = ppt.createSlide(); + assertEquals(0, slide.getShapes().length); + + XSLFTextBox textBox = slide.createTextBox(); + + assertEquals(1, slide.getShapes().length); + assertSame(textBox, slide.getShapes()[0]); + + assertEquals("", textBox.getText()); + assertEquals(0, textBox.getTextParagraphs().size()); + textBox.addNewTextParagraph().addNewTextRun().setText("Apache"); + textBox.addNewTextParagraph().addNewTextRun().setText("POI"); + assertEquals("Apache\nPOI", textBox.getText()); + assertEquals(2, textBox.getTextParagraphs().size()); + } + +} \ No newline at end of file Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFShape.java ------------------------------------------------------------------------------ svn:executable = * Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSheet.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSheet.java?rev=1156539&view=auto ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSheet.java (added) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSheet.java Thu Aug 11 08:38:19 2011 @@ -0,0 +1,66 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.xslf.usermodel; + +import junit.framework.TestCase; + +import org.apache.poi.xslf.XSLFTestDataSamples; + +/** + * test common properties for sheets (slides, masters, layouts, etc.) + * + * @author Yegor Kozlov + */ +public class TestXSLFSheet extends TestCase { + public void testCreateShapes(){ + XMLSlideShow ppt = new XMLSlideShow(); + XSLFSlide slide = ppt.createSlide(); + assertEquals(0, slide.getShapes().length); + + XSLFSimpleShape shape1 = slide.createAutoShape(); + assertEquals(1, slide.getShapes().length); + assertSame(shape1, slide.getShapes()[0]); + + XSLFTextBox shape2 = slide.createTextBox(); + assertEquals(2, slide.getShapes().length); + assertSame(shape1, slide.getShapes()[0]); + assertSame(shape2, slide.getShapes()[1]); + + XSLFConnectorShape shape3 = slide.createConnector(); + assertEquals(3, slide.getShapes().length); + assertSame(shape1, slide.getShapes()[0]); + assertSame(shape2, slide.getShapes()[1]); + assertSame(shape3, slide.getShapes()[2]); + + XSLFGroupShape shape4 = slide.createGroup(); + assertEquals(4, slide.getShapes().length); + assertSame(shape1, slide.getShapes()[0]); + assertSame(shape2, slide.getShapes()[1]); + assertSame(shape3, slide.getShapes()[2]); + assertSame(shape4, slide.getShapes()[3]); + + ppt = XSLFTestDataSamples.writeOutAndReadBack(ppt); + slide = ppt.getSlides()[0]; + XSLFShape[] shapes = slide.getShapes(); + assertEquals(4, shapes.length); + + assertTrue(shapes[0] instanceof XSLFAutoShape); + assertTrue(shapes[1] instanceof XSLFTextBox); + assertTrue(shapes[2] instanceof XSLFConnectorShape); + assertTrue(shapes[3] instanceof XSLFGroupShape); + } +} \ No newline at end of file Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSimpleShape.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSimpleShape.java?rev=1156539&view=auto ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSimpleShape.java (added) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSimpleShape.java Thu Aug 11 08:38:19 2011 @@ -0,0 +1,132 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.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 java.awt.*; + +/** + * @author Yegor Kozlov + */ +public class TestXSLFSimpleShape extends TestCase { + public void testLineStyles() { + XMLSlideShow ppt = new XMLSlideShow(); + XSLFSlide slide = ppt.createSlide(); + + XSLFSimpleShape shape = slide.createAutoShape(); + assertEquals(1, slide.getShapes().length); + // line properties are not set by default + assertFalse(shape.getSpPr().isSetLn()); + + assertEquals(0., shape.getLineWidth()); + assertEquals(null, shape.getLineColor()); + assertEquals(null, shape.getLineDash()); + assertEquals(null, shape.getLineCap()); + + shape.setLineWidth(0); + shape.setLineColor(null); + shape.setLineDash(null); + shape.setLineCap(null); + + // still no line properties + assertFalse(shape.getSpPr().isSetLn()); + + // line width + shape.setLineWidth(1.0); + assertEquals(1.0, shape.getLineWidth()); + assertEquals(Units.EMU_PER_POINT, shape.getSpPr().getLn().getW()); + shape.setLineWidth(5.5); + assertEquals(5.5, shape.getLineWidth()); + assertEquals(Units.toEMU(5.5), shape.getSpPr().getLn().getW()); + shape.setLineWidth(0.0); + // setting line width to zero unsets the W attribute + assertFalse(shape.getSpPr().getLn().isSetW()); + + // line cap + shape.setLineCap(LineCap.FLAT); + assertEquals(LineCap.FLAT, shape.getLineCap()); + assertEquals(STLineCap.FLAT, shape.getSpPr().getLn().getCap()); + shape.setLineCap(LineCap.SQUARE); + assertEquals(LineCap.SQUARE, shape.getLineCap()); + assertEquals(STLineCap.SQ, shape.getSpPr().getLn().getCap()); + shape.setLineCap(LineCap.ROUND); + assertEquals(LineCap.ROUND, shape.getLineCap()); + assertEquals(STLineCap.RND, shape.getSpPr().getLn().getCap()); + shape.setLineCap(null); + // setting cap to null unsets the Cap attribute + assertFalse(shape.getSpPr().getLn().isSetCap()); + + // line dash + shape.setLineDash(LineDash.SOLID); + assertEquals(LineDash.SOLID, shape.getLineDash()); + assertEquals(STPresetLineDashVal.SOLID, shape.getSpPr().getLn().getPrstDash().getVal()); + shape.setLineDash(LineDash.DASH_DOT); + assertEquals(LineDash.DASH_DOT, shape.getLineDash()); + assertEquals(STPresetLineDashVal.DASH_DOT, shape.getSpPr().getLn().getPrstDash().getVal()); + shape.setLineDash(LineDash.LG_DASH_DOT); + assertEquals(LineDash.LG_DASH_DOT, shape.getLineDash()); + assertEquals(STPresetLineDashVal.LG_DASH_DOT, shape.getSpPr().getLn().getPrstDash().getVal()); + shape.setLineDash(null); + // setting dash width to null unsets the Dash element + assertFalse(shape.getSpPr().getLn().isSetPrstDash()); + + // line color + assertFalse(shape.getSpPr().getLn().isSetSolidFill()); + shape.setLineColor(Color.RED); + assertEquals(Color.RED, shape.getLineColor()); + assertTrue(shape.getSpPr().getLn().isSetSolidFill()); + shape.setLineColor(Color.BLUE); + assertEquals(Color.BLUE, shape.getLineColor()); + assertTrue(shape.getSpPr().getLn().isSetSolidFill()); + shape.setLineColor(null); + assertEquals(null, shape.getLineColor()); + // setting dash width to null unsets the SolidFill element + assertFalse(shape.getSpPr().getLn().isSetSolidFill()); + } + + public void testFill() { + XMLSlideShow ppt = new XMLSlideShow(); + XSLFSlide slide = ppt.createSlide(); + + XSLFAutoShape shape = slide.createAutoShape(); + // line properties are not set by default + assertFalse(shape.getSpPr().isSetSolidFill()); + + assertNull(shape.getFillColor()); + shape.setFillColor(null); + assertNull(shape.getFillColor()); + assertFalse(shape.getSpPr().isSetSolidFill()); + + shape.setFillColor(Color.RED); + assertEquals(Color.RED, shape.getFillColor()); + shape.setFillColor(Color.DARK_GRAY); + assertEquals(Color.DARK_GRAY, shape.getFillColor()); + assertTrue(shape.getSpPr().isSetSolidFill()); + + shape.setFillColor(null); + assertNull(shape.getFillColor()); + assertFalse(shape.getSpPr().isSetSolidFill()); + } + +} \ No newline at end of file Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlide.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlide.java?rev=1156539&view=auto ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlide.java (added) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlide.java Thu Aug 11 08:38:19 2011 @@ -0,0 +1,102 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.xslf.usermodel; + +import junit.framework.TestCase; + +import org.apache.poi.xslf.XSLFTestDataSamples; +import org.apache.poi.POIXMLDocumentPart; + +import java.util.List; + +/** + * @author Yegor Kozlov + */ +public class TestXSLFSlide extends TestCase { + public void testReadShapes(){ + XMLSlideShow ppt = XSLFTestDataSamples.openSampleDocument("shapes.pptx"); + XSLFSlide[] slides = ppt.getSlides(); + assertEquals(3, slides.length); + + XSLFSlide slide1 = slides[0]; + XSLFShape[] shapes1 = slide1.getShapes(); + assertEquals(7, shapes1.length); + assertEquals("TextBox 3", shapes1[0].getShapeName()); + assertTrue(shapes1[0] instanceof XSLFTextBox); + XSLFAutoShape sh0 = (XSLFAutoShape)shapes1[0]; + assertEquals("Learning PPTX", sh0.getText()); + + + assertEquals("Straight Connector 5", shapes1[1].getShapeName()); + assertTrue(shapes1[1] instanceof XSLFConnectorShape); + + assertEquals("Freeform 6", shapes1[2].getShapeName()); + assertTrue(shapes1[2] instanceof XSLFFreeformShape); + XSLFAutoShape sh2 = (XSLFAutoShape)shapes1[2]; + assertEquals("Cloud", sh2.getText()); + + assertEquals("Picture 1", shapes1[3].getShapeName()); + assertTrue(shapes1[3] instanceof XSLFPictureShape); + + assertEquals("Table 2", shapes1[4].getShapeName()); + assertTrue(shapes1[4] instanceof XSLFGraphicFrame); + + assertEquals("Straight Arrow Connector 7", shapes1[5].getShapeName()); + assertTrue(shapes1[5] instanceof XSLFConnectorShape); + + assertEquals("Elbow Connector 9", shapes1[6].getShapeName()); + assertTrue(shapes1[6] instanceof XSLFConnectorShape); + + // titles on slide2 + XSLFSlide slide2 = slides[1]; + XSLFShape[] shapes2 = slide2.getShapes(); + assertEquals(2, shapes2.length); + assertTrue(shapes2[0] instanceof XSLFAutoShape); + assertEquals("PPTX Title", ((XSLFAutoShape)shapes2[0]).getText()); + assertTrue(shapes2[1] instanceof XSLFAutoShape); + assertEquals("Subtitle\nAnd second line", ((XSLFAutoShape)shapes2[1]).getText()); + + // group shape on slide3 + XSLFSlide slide3 = slides[2]; + XSLFShape[] shapes3 = slide3.getShapes(); + assertEquals(1, shapes3.length); + assertTrue(shapes3[0] instanceof XSLFGroupShape); + XSLFShape[] groupShapes = ((XSLFGroupShape)shapes3[0]).getShapes(); + assertEquals(3, groupShapes.length); + assertTrue(groupShapes[0] instanceof XSLFAutoShape); + assertEquals("Rectangle 1", groupShapes[0].getShapeName()); + + assertTrue(groupShapes[1] instanceof XSLFAutoShape); + assertEquals("Oval 2", groupShapes[1].getShapeName()); + + assertTrue(groupShapes[2] instanceof XSLFAutoShape); + assertEquals("Right Arrow 3", groupShapes[2].getShapeName()); + } + + public void testCreateSlide(){ + XMLSlideShow ppt = new XMLSlideShow(); + assertEquals(0, ppt.getSlides().length); + + XSLFSlide slide = ppt.createSlide(); + assertTrue(slide.getFollowMasterBackground()); + slide.setFollowMasterBackground(false); + assertFalse(slide.getFollowMasterBackground()); + slide.setFollowMasterBackground(true); + assertTrue(slide.getFollowMasterBackground()); + } + +} \ No newline at end of file Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlide.java ------------------------------------------------------------------------------ svn:executable = * Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlideShow.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlideShow.java?rev=1156539&view=auto ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlideShow.java (added) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlideShow.java Thu Aug 11 08:38:19 2011 @@ -0,0 +1,108 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.xslf.usermodel; + +import junit.framework.TestCase; + +import java.awt.Dimension; +import java.util.List; + +import org.apache.poi.POIXMLDocumentPart; +import org.apache.poi.xslf.XSLFTestDataSamples; + +/** + * @author Yegor Kozlov + */ +public class TestXSLFSlideShow extends TestCase { + public void testCreateSlide(){ + XMLSlideShow ppt = new XMLSlideShow(); + assertEquals(0, ppt.getSlides().length); + + XSLFSlide slide1 = ppt.createSlide(); + assertEquals(1, ppt.getSlides().length); + assertSame(slide1, ppt.getSlides()[0]); + + List rels = slide1.getRelations(); + assertEquals(1, rels.size()); + assertEquals(slide1.getMasterSheet().getLayout("blank"), rels.get(0)); + + XSLFSlide slide2 = ppt.createSlide(); + assertEquals(2, ppt.getSlides().length); + assertSame(slide2, ppt.getSlides()[1]); + + ppt.setSlideOrder(slide2, 0); + assertSame(slide2, ppt.getSlides()[0]); + assertSame(slide1, ppt.getSlides()[1]); + + ppt = XSLFTestDataSamples.writeOutAndReadBack(ppt); + assertEquals(2, ppt.getSlides().length); + rels = ppt.getSlides()[0].getRelations(); + } + + public void testRemoveSlide(){ + XMLSlideShow ppt = new XMLSlideShow(); + assertEquals(0, ppt.getSlides().length); + + XSLFSlide slide1 = ppt.createSlide(); + XSLFSlide slide2 = ppt.createSlide(); + + assertEquals(2, ppt.getSlides().length); + assertSame(slide1, ppt.getSlides()[0]); + assertSame(slide2, ppt.getSlides()[1]); + + XSLFSlide removedSlide = ppt.removeSlide(0); + assertSame(slide1, removedSlide); + + assertEquals(1, ppt.getSlides().length); + assertSame(slide2, ppt.getSlides()[0]); + + ppt = XSLFTestDataSamples.writeOutAndReadBack(ppt); + assertEquals(1, ppt.getSlides().length); + } + + public void testDimension(){ + XMLSlideShow ppt = new XMLSlideShow(); + Dimension sz = ppt.getPageSize(); + assertEquals(720, sz.width); + assertEquals(540, sz.height); + ppt.setPageSize(new Dimension(792, 612)); + sz = ppt.getPageSize(); + assertEquals(792, sz.width); + assertEquals(612, sz.height); + } + + public void testSlideMasters(){ + XMLSlideShow ppt = new XMLSlideShow(); + XSLFSlideMaster[] masters = ppt.getSlideMasters(); + assertEquals(1, masters.length); + + XSLFSlide slide = ppt.createSlide(); + assertSame(masters[0], slide.getMasterSheet()); + } + + public void testSlideLayout(){ + XMLSlideShow ppt = new XMLSlideShow(); + XSLFSlideMaster[] masters = ppt.getSlideMasters(); + assertEquals(1, masters.length); + + XSLFSlide slide = ppt.createSlide(); + XSLFSlideLayout layout = slide.getSlideLayout(); + assertNotNull(layout); + + assertSame(masters[0], layout.getSlideMaster()); + } +} Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSlideShow.java ------------------------------------------------------------------------------ svn:executable = * Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextBox.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextBox.java?rev=1156539&view=auto ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextBox.java (added) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextBox.java Thu Aug 11 08:38:19 2011 @@ -0,0 +1,37 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.xslf.usermodel; + +import junit.framework.TestCase; + +/** + * @author Yegor Kozlov + */ +public class TestXSLFTextBox extends TestCase { + + public void testPlaceholder() { + XMLSlideShow ppt = new XMLSlideShow(); + XSLFSlide slide = ppt.createSlide(); + + XSLFTextBox shape = slide.createTextBox(); + assertNull(shape.getPlaceholder()); + shape.setPlaceholder(Placeholder.TITLE); + assertEquals(Placeholder.TITLE, shape.getPlaceholder()); + shape.setPlaceholder(null); + assertNull(shape.getPlaceholder()); + } +} \ No newline at end of file Added: poi/trunk/src/resources/scratchpad/org/apache/poi/xslf/usermodel/empty.pptx URL: http://svn.apache.org/viewvc/poi/trunk/src/resources/scratchpad/org/apache/poi/xslf/usermodel/empty.pptx?rev=1156539&view=auto ============================================================================== Binary file - no diff available. Propchange: poi/trunk/src/resources/scratchpad/org/apache/poi/xslf/usermodel/empty.pptx ------------------------------------------------------------------------------ svn:executable = * Propchange: poi/trunk/src/resources/scratchpad/org/apache/poi/xslf/usermodel/empty.pptx ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: poi/trunk/test-data/slideshow/shapes.pptx URL: http://svn.apache.org/viewvc/poi/trunk/test-data/slideshow/shapes.pptx?rev=1156539&view=auto ============================================================================== Binary file - no diff available. Propchange: poi/trunk/test-data/slideshow/shapes.pptx ------------------------------------------------------------------------------ svn:executable = * Propchange: poi/trunk/test-data/slideshow/shapes.pptx ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org For additional commands, e-mail: commits-help@poi.apache.org