Search in sources :

Example 1 with CTPlaceholder

use of org.openxmlformats.schemas.presentationml.x2006.main.CTPlaceholder in project poi by apache.

the class XSLFTextParagraph method getDefaultMasterStyle.

/**
     * @return master style text paragraph properties, or <code>null</code> if 
     * there are no master slides or the master slides do not contain a text paragraph
     */
/* package */
CTTextParagraphProperties getDefaultMasterStyle() {
    CTPlaceholder ph = _shape.getCTPlaceholder();
    String defaultStyleSelector;
    switch(ph == null ? -1 : ph.getType().intValue()) {
        case STPlaceholderType.INT_TITLE:
        case STPlaceholderType.INT_CTR_TITLE:
            defaultStyleSelector = "titleStyle";
            break;
        // no placeholder means plain text box
        case -1:
        case STPlaceholderType.INT_FTR:
        case STPlaceholderType.INT_SLD_NUM:
        case STPlaceholderType.INT_DT:
            defaultStyleSelector = "otherStyle";
            break;
        default:
            defaultStyleSelector = "bodyStyle";
            break;
    }
    int level = getIndentLevel();
    // wind up and find the root master sheet which must be slide master
    final String nsPML = "http://schemas.openxmlformats.org/presentationml/2006/main";
    final String nsDML = "http://schemas.openxmlformats.org/drawingml/2006/main";
    XSLFSheet masterSheet = _shape.getSheet();
    for (XSLFSheet m = masterSheet; m != null; m = (XSLFSheet) m.getMasterSheet()) {
        masterSheet = m;
        XmlObject xo = masterSheet.getXmlObject();
        XmlCursor cur = xo.newCursor();
        try {
            cur.push();
            if ((cur.toChild(nsPML, "txStyles") && cur.toChild(nsPML, defaultStyleSelector)) || (cur.pop() && cur.toChild(nsPML, "notesStyle"))) {
                while (level >= 0) {
                    cur.push();
                    if (cur.toChild(nsDML, "lvl" + (level + 1) + "pPr")) {
                        return (CTTextParagraphProperties) cur.getObject();
                    }
                    cur.pop();
                    level--;
                }
            }
        } finally {
            cur.dispose();
        }
    }
    return null;
}
Also used : CTPlaceholder(org.openxmlformats.schemas.presentationml.x2006.main.CTPlaceholder) XmlObject(org.apache.xmlbeans.XmlObject) CTTextParagraphProperties(org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraphProperties) DrawPaint(org.apache.poi.sl.draw.DrawPaint) SolidPaint(org.apache.poi.sl.usermodel.PaintStyle.SolidPaint) CTTextBulletSizePoint(org.openxmlformats.schemas.drawingml.x2006.main.CTTextBulletSizePoint) XmlCursor(org.apache.xmlbeans.XmlCursor)

Example 2 with CTPlaceholder

use of org.openxmlformats.schemas.presentationml.x2006.main.CTPlaceholder in project poi by apache.

the class XSLFSlideMaster method canDraw.

/**
     * Render this sheet into the supplied graphics object
     *
     */
@Override
protected boolean canDraw(XSLFShape shape) {
    if (shape instanceof XSLFSimpleShape) {
        XSLFSimpleShape txt = (XSLFSimpleShape) shape;
        CTPlaceholder ph = txt.getCTPlaceholder();
        if (ph != null) {
            return false;
        }
    }
    return true;
}
Also used : CTPlaceholder(org.openxmlformats.schemas.presentationml.x2006.main.CTPlaceholder)

Example 3 with CTPlaceholder

use of org.openxmlformats.schemas.presentationml.x2006.main.CTPlaceholder in project poi by apache.

the class XSLFTextShape method getTextType.

public Placeholder getTextType() {
    CTPlaceholder ph = getCTPlaceholder();
    if (ph == null)
        return null;
    int val = ph.getType().intValue();
    return Placeholder.lookupOoxml(val);
}
Also used : CTPlaceholder(org.openxmlformats.schemas.presentationml.x2006.main.CTPlaceholder)

Example 4 with CTPlaceholder

use of org.openxmlformats.schemas.presentationml.x2006.main.CTPlaceholder in project poi by apache.

the class TestXSLFTextShape method verifySlide4.

void verifySlide4(XSLFSlide slide) {
    XSLFSlideLayout layout = slide.getSlideLayout();
    List<XSLFShape> shapes = slide.getShapes();
    assertEquals("Two Content", layout.getName());
    XSLFTextShape shape1 = (XSLFTextShape) shapes.get(0);
    CTPlaceholder ph1 = shape1.getCTPlaceholder();
    assertEquals(STPlaceholderType.TITLE, ph1.getType());
    // anchor is not defined in the shape
    assertNull(getSpPr(shape1).getXfrm());
    XSLFTextShape masterShape1 = (XSLFTextShape) layout.getPlaceholder(ph1);
    // layout does not have anchor info either, it is in the slide master
    assertNull(getSpPr(masterShape1).getXfrm());
    masterShape1 = (XSLFTextShape) layout.getSlideMaster().getPlaceholder(ph1);
    assertNotNull(getSpPr(masterShape1).getXfrm());
    assertEquals(masterShape1.getAnchor(), shape1.getAnchor());
    CTTextBodyProperties bodyPr1 = shape1.getTextBodyPr();
    // none of the following properties are set in the shapes and fetched from the master shape
    assertTrue(!bodyPr1.isSetLIns() && !bodyPr1.isSetRIns() && !bodyPr1.isSetBIns() && !bodyPr1.isSetTIns() && !bodyPr1.isSetAnchor());
    // 0.1"
    assertEquals(7.2, shape1.getLeftInset(), 0);
    // 0.1"
    assertEquals(7.2, shape1.getRightInset(), 0);
    // 0.05"
    assertEquals(3.6, shape1.getTopInset(), 0);
    // 0.05"
    assertEquals(3.6, shape1.getBottomInset(), 0);
    assertEquals(VerticalAlignment.MIDDLE, shape1.getVerticalAlignment());
    // now check text properties
    assertEquals("Title", shape1.getText());
    XSLFTextRun r1 = shape1.getTextParagraphs().get(0).getTextRuns().get(0);
    assertEquals(TextAlign.CENTER, r1.getParentParagraph().getTextAlign());
    assertEquals("Calibri", r1.getFontFamily());
    assertEquals(44.0, r1.getFontSize(), 0);
    assertTrue(sameColor(Color.black, r1.getFontColor()));
    XSLFTextShape shape2 = (XSLFTextShape) shapes.get(1);
    CTPlaceholder ph2 = shape2.getCTPlaceholder();
    assertFalse(ph2.isSetType());
    assertTrue(ph2.isSetIdx());
    //<p:ph sz="half" idx="1"/>
    assertEquals(1, ph2.getIdx());
    // anchor is not defined in the shape
    assertNull(getSpPr(shape2).getXfrm());
    XSLFTextShape masterShape2 = (XSLFTextShape) layout.getPlaceholder(ph2);
    assertNotNull(getSpPr(masterShape2).getXfrm());
    assertEquals(masterShape2.getAnchor(), shape2.getAnchor());
    CTTextBodyProperties bodyPr2 = shape2.getTextBodyPr();
    // none of the following properties are set in the shapes and fetched from the master shape
    assertTrue(!bodyPr2.isSetLIns() && !bodyPr2.isSetRIns() && !bodyPr2.isSetBIns() && !bodyPr2.isSetTIns() && !bodyPr2.isSetAnchor());
    // 0.1"
    assertEquals(7.2, shape2.getLeftInset(), 0);
    // 0.1"
    assertEquals(7.2, shape2.getRightInset(), 0);
    // 0.05"
    assertEquals(3.6, shape2.getTopInset(), 0);
    // 0.05"
    assertEquals(3.6, shape2.getBottomInset(), 0);
    assertEquals(VerticalAlignment.TOP, shape2.getVerticalAlignment());
    XSLFTextRun pr1 = shape2.getTextParagraphs().get(0).getTextRuns().get(0);
    assertEquals(0, pr1.getParentParagraph().getIndentLevel());
    assertEquals("Left", pr1.getRawText());
    assertEquals("Calibri", pr1.getFontFamily());
    assertEquals(28.0, pr1.getFontSize(), 0);
    assertEquals(27.0, pr1.getParentParagraph().getLeftMargin(), 0);
    assertEquals("•", pr1.getParentParagraph().getBulletCharacter());
    assertEquals("Arial", pr1.getParentParagraph().getBulletFont());
    XSLFTextRun pr2 = shape2.getTextParagraphs().get(1).getTextRuns().get(0);
    assertEquals(1, pr2.getParentParagraph().getIndentLevel());
    assertEquals("Level 2", pr2.getParentParagraph().getText());
    assertEquals("Calibri", pr2.getFontFamily());
    assertEquals(24.0, pr2.getFontSize(), 0);
    assertEquals(58.5, pr2.getParentParagraph().getLeftMargin(), 0);
    assertEquals("–", pr2.getParentParagraph().getBulletCharacter());
    assertEquals("Arial", pr2.getParentParagraph().getBulletFont());
    XSLFTextRun pr3 = shape2.getTextParagraphs().get(2).getTextRuns().get(0);
    assertEquals(2, pr3.getParentParagraph().getIndentLevel());
    assertEquals("Level 3", pr3.getParentParagraph().getText());
    assertEquals("Calibri", pr3.getFontFamily());
    assertEquals(20.0, pr3.getFontSize(), 0);
    assertEquals(90.0, pr3.getParentParagraph().getLeftMargin(), 0);
    assertEquals("•", pr3.getParentParagraph().getBulletCharacter());
    assertEquals("Arial", pr3.getParentParagraph().getBulletFont());
    XSLFTextRun pr4 = shape2.getTextParagraphs().get(3).getTextRuns().get(0);
    assertEquals(3, pr4.getParentParagraph().getIndentLevel());
    assertEquals("Level 4", pr4.getParentParagraph().getText());
    assertEquals("Calibri", pr4.getFontFamily());
    assertEquals(18.0, pr4.getFontSize(), 0);
    assertEquals(126.0, pr4.getParentParagraph().getLeftMargin(), 0);
    assertEquals("–", pr4.getParentParagraph().getBulletCharacter());
    assertEquals("Arial", pr4.getParentParagraph().getBulletFont());
    XSLFTextShape shape3 = (XSLFTextShape) shapes.get(2);
    XSLFTextRun pr5 = shape3.getTextParagraphs().get(0).getTextRuns().get(0);
    assertEquals(0, pr5.getParentParagraph().getIndentLevel());
    assertEquals("Right", pr5.getRawText());
    assertEquals("Calibri", pr5.getFontFamily());
    assertTrue(sameColor(Color.black, pr5.getFontColor()));
}
Also used : CTPlaceholder(org.openxmlformats.schemas.presentationml.x2006.main.CTPlaceholder) CTTextBodyProperties(org.openxmlformats.schemas.drawingml.x2006.main.CTTextBodyProperties)

Example 5 with CTPlaceholder

use of org.openxmlformats.schemas.presentationml.x2006.main.CTPlaceholder in project poi by apache.

the class TestXSLFTextShape method verifySlide7.

void verifySlide7(XSLFSlide slide) {
    XSLFSlideLayout layout = slide.getSlideLayout();
    List<XSLFShape> shapes = slide.getShapes();
    assertEquals("Blank", layout.getName());
    XSLFTextShape shape1 = (XSLFTextShape) shapes.get(0);
    CTPlaceholder ph1 = shape1.getCTPlaceholder();
    assertEquals(STPlaceholderType.TITLE, ph1.getType());
    // anchor is not defined in the shape
    assertNull(getSpPr(shape1).getXfrm());
    CTTextBodyProperties bodyPr1 = shape1.getTextBodyPr();
    // none of the following properties are set in the shapes and fetched from the master shape
    assertTrue(!bodyPr1.isSetLIns() && !bodyPr1.isSetRIns() && !bodyPr1.isSetBIns() && !bodyPr1.isSetTIns() && !bodyPr1.isSetAnchor());
    // 0.1"
    assertEquals(7.2, shape1.getLeftInset(), 0);
    // 0.1"
    assertEquals(7.2, shape1.getRightInset(), 0);
    // 0.05"
    assertEquals(3.6, shape1.getTopInset(), 0);
    // 0.05"
    assertEquals(3.6, shape1.getBottomInset(), 0);
    assertEquals(VerticalAlignment.MIDDLE, shape1.getVerticalAlignment());
    // now check text properties
    assertEquals("Blank with Default Title", shape1.getText());
    XSLFTextRun r1 = shape1.getTextParagraphs().get(0).getTextRuns().get(0);
    assertEquals(TextAlign.CENTER, r1.getParentParagraph().getTextAlign());
    assertEquals("Calibri", r1.getFontFamily());
    assertEquals(44.0, r1.getFontSize(), 0);
    assertTrue(sameColor(Color.black, r1.getFontColor()));
    assertFalse(r1.isBold());
    XSLFTextShape shape2 = (XSLFTextShape) shapes.get(1);
    CTTextBodyProperties bodyPr2 = shape2.getTextBodyPr();
    // none of the following properties are set in the shapes and fetched from the master shape
    assertTrue(!bodyPr2.isSetLIns() && !bodyPr2.isSetRIns() && !bodyPr2.isSetBIns() && !bodyPr2.isSetTIns() && !bodyPr2.isSetAnchor());
    // 0.1"
    assertEquals(7.2, shape2.getLeftInset(), 0);
    // 0.1"
    assertEquals(7.2, shape2.getRightInset(), 0);
    // 0.05"
    assertEquals(3.6, shape2.getTopInset(), 0);
    // 0.05"
    assertEquals(3.6, shape2.getBottomInset(), 0);
    assertEquals(VerticalAlignment.TOP, shape2.getVerticalAlignment());
    XSLFTextRun pr1 = shape2.getTextParagraphs().get(0).getTextRuns().get(0);
    assertEquals(0, pr1.getParentParagraph().getIndentLevel());
    assertEquals("Default Text", pr1.getRawText());
    assertEquals("Calibri", pr1.getFontFamily());
    assertEquals(18.0, pr1.getFontSize(), 0);
    XSLFTextShape shape3 = (XSLFTextShape) shapes.get(2);
    assertEquals("Default", shape3.getTextParagraphs().get(0).getText());
    assertEquals("Text with levels", shape3.getTextParagraphs().get(1).getText());
    assertEquals("Level 1", shape3.getTextParagraphs().get(2).getText());
    assertEquals("Level 2", shape3.getTextParagraphs().get(3).getText());
    assertEquals("Level 3", shape3.getTextParagraphs().get(4).getText());
    for (int p = 0; p < 5; p++) {
        XSLFTextParagraph pr = shape3.getTextParagraphs().get(p);
        assertEquals("Calibri", pr.getTextRuns().get(0).getFontFamily());
        assertEquals(18.0, pr.getTextRuns().get(0).getFontSize(), 0);
    }
}
Also used : CTPlaceholder(org.openxmlformats.schemas.presentationml.x2006.main.CTPlaceholder) CTTextBodyProperties(org.openxmlformats.schemas.drawingml.x2006.main.CTTextBodyProperties)

Aggregations

CTPlaceholder (org.openxmlformats.schemas.presentationml.x2006.main.CTPlaceholder)15 CTTextBodyProperties (org.openxmlformats.schemas.drawingml.x2006.main.CTTextBodyProperties)6 DrawPaint (org.apache.poi.sl.draw.DrawPaint)3 CTTextParagraphProperties (org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraphProperties)3 SolidPaint (org.apache.poi.sl.usermodel.PaintStyle.SolidPaint)2 CTTextBulletSizePoint (org.openxmlformats.schemas.drawingml.x2006.main.CTTextBulletSizePoint)2 GradientPaint (org.apache.poi.sl.usermodel.PaintStyle.GradientPaint)1 TexturePaint (org.apache.poi.sl.usermodel.PaintStyle.TexturePaint)1 XmlCursor (org.apache.xmlbeans.XmlCursor)1 XmlObject (org.apache.xmlbeans.XmlObject)1 CTTextCharacterProperties (org.openxmlformats.schemas.drawingml.x2006.main.CTTextCharacterProperties)1