XSLFTextRun r3 = p3.addNewTextRun();
r3.setText("XSLF");
// level 1 : default title style on the master slide
// /p:sldMaster/p:txStyles/p:bodyStyle/a:lvl1pPr
CTTextParagraphProperties lv1PPr = master.getXmlObject().getTxStyles().getBodyStyle().getLvl1PPr();
CTTextCharacterProperties lv1CPr = lv1PPr.getDefRPr();
CTTextParagraphProperties lv2PPr = master.getXmlObject().getTxStyles().getBodyStyle().getLvl2PPr();
CTTextCharacterProperties lv2CPr = lv2PPr.getDefRPr();
CTTextParagraphProperties lv3PPr = master.getXmlObject().getTxStyles().getBodyStyle().getLvl3PPr();
CTTextCharacterProperties lv3CPr = lv3PPr.getDefRPr();
// lv1
assertEquals(3200, lv1CPr.getSz());
assertEquals(32.0, r1.getFontSize());
assertEquals("+mn-lt", lv1CPr.getLatin().getTypeface());
assertEquals("Calibri", theme.getMinorFont());
assertEquals("Calibri", r1.getFontFamily());
lv1CPr.setSz(3300);
assertEquals(33.0, r1.getFontSize());
lv1CPr.getLatin().setTypeface("Arial");
assertEquals("Arial", r1.getFontFamily());
assertEquals(STTextAlignType.L, lv1PPr.getAlgn());
assertEquals(TextAlign.LEFT, p1.getTextAlign());
lv1PPr.setAlgn(STTextAlignType.R);
assertEquals(TextAlign.RIGHT, p1.getTextAlign());
//lv2
assertEquals(2800, lv2CPr.getSz());
assertEquals(28.0, r2.getFontSize());
lv2CPr.setSz(3300);
assertEquals(33.0, r2.getFontSize());
lv2CPr.getLatin().setTypeface("Times");
assertEquals("Times", r2.getFontFamily());
assertEquals(STTextAlignType.L, lv2PPr.getAlgn());
assertEquals(TextAlign.LEFT, p2.getTextAlign());
lv2PPr.setAlgn(STTextAlignType.R);
assertEquals(TextAlign.RIGHT, p2.getTextAlign());
//lv3
assertEquals(2400, lv3CPr.getSz());
assertEquals(24.0, r3.getFontSize());
lv3CPr.setSz(2500);
assertEquals(25.0, r3.getFontSize());
lv3CPr.getLatin().setTypeface("Courier New");
assertEquals("Courier New", r3.getFontFamily());
assertEquals(STTextAlignType.L, lv3PPr.getAlgn());
assertEquals(TextAlign.LEFT, p3.getTextAlign());
lv3PPr.setAlgn(STTextAlignType.R);
assertEquals(TextAlign.RIGHT, p3.getTextAlign());
// level 2: body placeholder on the master slide
// /p:sldMaster/p:cSld/p:spTree/p:sp/p:nvPr/p:ph[@type="body"]
XSLFTextShape tx2 = master.getPlaceholder(1);
assertEquals(Placeholder.BODY, tx2.getTextType());
lv1PPr = tx2.getTextBody(true).getLstStyle().addNewLvl1PPr();
lv1CPr = lv1PPr.addNewDefRPr();
lv2PPr = tx2.getTextBody(true).getLstStyle().addNewLvl2PPr();
lv2CPr = lv2PPr.addNewDefRPr();
lv3PPr = tx2.getTextBody(true).getLstStyle().addNewLvl3PPr();
lv3CPr = lv3PPr.addNewDefRPr();
lv1CPr.setSz(3300);
assertEquals(33.0, r1.getFontSize());
lv1CPr.addNewLatin().setTypeface("Times");
assertEquals("Times", r1.getFontFamily());
lv1PPr.setAlgn(STTextAlignType.L);
assertEquals(TextAlign.LEFT, p1.getTextAlign());
lv2CPr.setSz(3300);
assertEquals(33.0, r2.getFontSize());
lv2CPr.addNewLatin().setTypeface("Times");
assertEquals("Times", r2.getFontFamily());
lv2PPr.setAlgn(STTextAlignType.L);
assertEquals(TextAlign.LEFT, p2.getTextAlign());
lv3CPr.setSz(3300);
assertEquals(33.0, r3.getFontSize());
lv3CPr.addNewLatin().setTypeface("Times");
assertEquals("Times", r3.getFontFamily());
lv3PPr.setAlgn(STTextAlignType.L);
assertEquals(TextAlign.LEFT, p3.getTextAlign());
// level 3: body placeholder on the slide layout
// /p:sldLayout /p:cSld/p:spTree/p:sp/p:nvPr/p:ph[@type="ctrTitle"]
XSLFTextShape tx3 = layout.getPlaceholder(1);
assertEquals(Placeholder.BODY, tx2.getTextType());
lv1PPr = tx3.getTextBody(true).getLstStyle().addNewLvl1PPr();
lv1CPr = lv1PPr.addNewDefRPr();
lv2PPr = tx3.getTextBody(true).getLstStyle().addNewLvl2PPr();
lv2CPr = lv2PPr.addNewDefRPr();
lv3PPr = tx3.getTextBody(true).getLstStyle().addNewLvl3PPr();
lv3CPr = lv3PPr.addNewDefRPr();
lv1CPr.setSz(3400);
assertEquals(34.0, r1.getFontSize());
lv1CPr.addNewLatin().setTypeface("Courier New");
assertEquals("Courier New", r1.getFontFamily());
lv1PPr.setAlgn(STTextAlignType.CTR);
assertEquals(TextAlign.CENTER, p1.getTextAlign());
lv2CPr.setSz(3400);
assertEquals(34.0, r2.getFontSize());
lv2CPr.addNewLatin().setTypeface("Courier New");
assertEquals("Courier New", r2.getFontFamily());
lv2PPr.setAlgn(STTextAlignType.CTR);
assertEquals(TextAlign.CENTER, p2.getTextAlign());
lv3CPr.setSz(3400);
assertEquals(34.0, r3.getFontSize());
lv3CPr.addNewLatin().setTypeface("Courier New");
assertEquals("Courier New", r3.getFontFamily());
lv3PPr.setAlgn(STTextAlignType.CTR);
assertEquals(TextAlign.CENTER, p3.getTextAlign());
// level 4: default text properties in the shape itself
// ./p:sp/p:txBody/a:lstStyle/a:lvl1pPr
lv1PPr = tx1.getTextBody(true).getLstStyle().addNewLvl1PPr();
lv1CPr = lv1PPr.addNewDefRPr();
lv2PPr = tx1.getTextBody(true).getLstStyle().addNewLvl2PPr();
lv2CPr = lv2PPr.addNewDefRPr();
lv3PPr = tx1.getTextBody(true).getLstStyle().addNewLvl3PPr();
lv3CPr = lv3PPr.addNewDefRPr();
lv1CPr.setSz(3500);
assertEquals(35.0, r1.getFontSize());
lv1CPr.addNewLatin().setTypeface("Arial");
assertEquals("Arial", r1.getFontFamily());
lv1PPr.setAlgn(STTextAlignType.L);
assertEquals(TextAlign.LEFT, p1.getTextAlign());
lv2CPr.setSz(3500);
assertEquals(35.0, r2.getFontSize());
lv2CPr.addNewLatin().setTypeface("Arial");
assertEquals("Arial", r2.getFontFamily());
lv2PPr.setAlgn(STTextAlignType.L);
assertEquals(TextAlign.LEFT, p2.getTextAlign());
lv3CPr.setSz(3500);
assertEquals(35.0, r3.getFontSize());
lv3CPr.addNewLatin().setTypeface("Arial");
assertEquals("Arial", r3.getFontFamily());
lv3PPr.setAlgn(STTextAlignType.L);
assertEquals(TextAlign.LEFT, p3.getTextAlign());
// level 5: text properties are defined in the text run
lv1PPr = p1.getXmlObject().isSetPPr() ? p1.getXmlObject().getPPr() : p1.getXmlObject().addNewPPr();
lv1CPr = r1.getXmlObject().getRPr();
lv2PPr = p2.getXmlObject().isSetPPr() ? p2.getXmlObject().getPPr() : p2.getXmlObject().addNewPPr();
lv2CPr = r2.getXmlObject().getRPr();
lv3PPr = p3.getXmlObject().isSetPPr() ? p3.getXmlObject().getPPr() : p3.getXmlObject().addNewPPr();
lv3CPr = r3.getXmlObject().getRPr();
lv1CPr.setSz(3600);
assertEquals(36.0, r1.getFontSize());
lv1CPr.addNewLatin().setTypeface("Calibri");
assertEquals("Calibri", r1.getFontFamily());
lv1PPr.setAlgn(STTextAlignType.CTR);
assertEquals(TextAlign.CENTER, p1.getTextAlign());
lv2CPr.setSz(3600);
assertEquals(36.0, r2.getFontSize());
lv2CPr.addNewLatin().setTypeface("Calibri");
assertEquals("Calibri", r2.getFontFamily());
lv2PPr.setAlgn(STTextAlignType.CTR);
assertEquals(TextAlign.CENTER, p2.getTextAlign());
lv3CPr.setSz(3600);
assertEquals(36.0, r3.getFontSize());
lv3CPr.addNewLatin().setTypeface("Calibri");
assertEquals("Calibri", r3.getFontFamily());
lv3PPr.setAlgn(STTextAlignType.CTR);
assertEquals(TextAlign.CENTER, p3.getTextAlign());
}