diff options
author | Andreas Beeker <kiwiwings@apache.org> | 2014-10-29 00:07:34 +0000 |
---|---|---|
committer | Andreas Beeker <kiwiwings@apache.org> | 2014-10-29 00:07:34 +0000 |
commit | 1f615e39c74360ec5ba99399a5ef5a9d20f57d32 (patch) | |
tree | d0e0819d127e80066e2bfe444fd0a022c24d10fb | |
parent | 1d8756bf3c75f6baeb166bd40f7f8e7f68f930d9 (diff) | |
download | poi-1f615e39c74360ec5ba99399a5ef5a9d20f57d32.tar.gz poi-1f615e39c74360ec5ba99399a5ef5a9d20f57d32.zip |
Bug 55164 - Support for adding slide notes
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1635010 13f79535-47bb-0310-9956-ffa450edef68
8 files changed, 278 insertions, 26 deletions
diff --git a/src/ooxml/java/org/apache/poi/POIXMLRelation.java b/src/ooxml/java/org/apache/poi/POIXMLRelation.java index e89090960c..8766dfff72 100644 --- a/src/ooxml/java/org/apache/poi/POIXMLRelation.java +++ b/src/ooxml/java/org/apache/poi/POIXMLRelation.java @@ -110,9 +110,18 @@ public abstract class POIXMLRelation { } return _defaultName.replace("#", Integer.toString(index)); } - + + /** + * Returns the index of the filename within the package for the given part. + * e.g. 4 for /xl/comments4.xml + */ + public Integer getFileNameIndex(POIXMLDocumentPart part) { + String regex = _defaultName.replace("#", "(\\d+)"); + return Integer.parseInt(part.getPackageRelationship().getTargetURI().getPath().replaceAll(regex, "$1")); + } + /** - * Return type of the obejct used to construct instances of this relationship + * Return type of the object used to construct instances of this relationship * * @return the class of the object used to construct instances of this relation */ diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java index 69dc029523..dca1aed06d 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java @@ -49,6 +49,8 @@ import org.apache.xmlbeans.XmlObject; import org.apache.xmlbeans.XmlOptions; import org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraphProperties; import org.openxmlformats.schemas.officeDocument.x2006.relationships.STRelationshipId; +import org.openxmlformats.schemas.presentationml.x2006.main.CTNotesMasterIdList; +import org.openxmlformats.schemas.presentationml.x2006.main.CTNotesMasterIdListEntry; import org.openxmlformats.schemas.presentationml.x2006.main.CTPresentation; import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideIdList; import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideIdListEntry; @@ -130,7 +132,7 @@ public class XMLSlideShow extends POIXMLDocument { } else if (p instanceof XSLFSlideMaster) { XSLFSlideMaster master = (XSLFSlideMaster)p; _masters.put(p.getPackageRelationship().getId(), master); - }else if (p instanceof XSLFTableStyles){ + } else if (p instanceof XSLFTableStyles){ _tableStyles = (XSLFTableStyles)p; } else if (p instanceof XSLFNotesMaster) { _notesMaster = (XSLFNotesMaster)p; @@ -155,7 +157,6 @@ public class XMLSlideShow extends POIXMLDocument { } } - @Override protected void commit() throws IOException { XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS); @@ -231,7 +232,7 @@ public class XMLSlideShow extends POIXMLDocument { _slides.add(slide); return slide; } - + /** * Create a blank slide. */ @@ -244,8 +245,97 @@ public class XMLSlideShow extends POIXMLDocument { return createSlide(layout); } + + /** + * Return notes slide for the specified slide or create new if it does not exist yet. + */ + public XSLFNotes getNotesSlide(XSLFSlide slide) { + + XSLFNotes notesSlide = slide.getNotes(); + if (notesSlide == null) { + notesSlide = createNotesSlide(slide); + } + + return notesSlide; + } + + /** + * Create a blank notes slide. + */ + private XSLFNotes createNotesSlide(XSLFSlide slide) { + + if (_notesMaster == null) { + createNotesMaster(); + } + + Integer slideIndex = XSLFRelation.SLIDE.getFileNameIndex(slide); + + XSLFNotes notesSlide = (XSLFNotes) createRelationship(XSLFRelation.NOTES, XSLFFactory.getInstance(), slideIndex); + + notesSlide.addRelation(_notesMaster.getPackageRelationship().getId(), _notesMaster); + PackagePartName notesMasterPackagePartName = _notesMaster.getPackagePart().getPartName(); + notesSlide.getPackagePart().addRelationship(notesMasterPackagePartName, TargetMode.INTERNAL, + _notesMaster.getPackageRelationship().getRelationshipType()); + + slide.addRelation(notesSlide.getPackageRelationship().getId(), notesSlide); + PackagePartName notesSlidesPackagePartName = notesSlide.getPackagePart().getPartName(); + slide.getPackagePart().addRelationship(notesSlidesPackagePartName, TargetMode.INTERNAL, + notesSlide.getPackageRelationship().getRelationshipType()); + + notesSlide.addRelation(slide.getPackageRelationship().getId(), slide); + PackagePartName slidesPackagePartName = slide.getPackagePart().getPartName(); + notesSlide.getPackagePart().addRelationship(slidesPackagePartName, TargetMode.INTERNAL, + slide.getPackageRelationship().getRelationshipType()); + + notesSlide.importContent(_notesMaster); + + return notesSlide; + } /** + * Create a notes master. + */ + public void createNotesMaster() { + + _notesMaster = (XSLFNotesMaster) createRelationship(XSLFRelation.NOTES_MASTER, + XSLFFactory.getInstance(), 1); + + CTNotesMasterIdList notesMasterIdList = _presentation.addNewNotesMasterIdLst(); + CTNotesMasterIdListEntry notesMasterId = notesMasterIdList.addNewNotesMasterId(); + notesMasterId.setId(_notesMaster.getPackageRelationship().getId()); + + Integer themeIndex = 1; + List<Integer> themeIndexList = new ArrayList<Integer>(); + for (POIXMLDocumentPart p : getRelations()) { + if (p instanceof XSLFTheme) { + themeIndexList.add(XSLFRelation.THEME.getFileNameIndex(p)); + } + } + + if (!themeIndexList.isEmpty()) { + Boolean found = false; + for (Integer i = 1; i <= themeIndexList.size(); i++) { + if (!themeIndexList.contains(i)) { + found = true; + themeIndex = i; + } + } + if (!found) { + themeIndex = themeIndexList.size() + 1; + } + } + + XSLFTheme theme = (XSLFTheme) createRelationship(XSLFRelation.THEME, + XSLFFactory.getInstance(), themeIndex); + theme.importTheme(getSlides()[0].getTheme()); + + _notesMaster.addRelation(theme.getPackageRelationship().getId(), theme); + PackagePartName themePackagePartName = theme.getPackagePart().getPartName(); + _notesMaster.getPackagePart().addRelationship(themePackagePartName, TargetMode.INTERNAL, + theme.getPackageRelationship().getRelationshipType()); + } + + /** * Return the Notes Master, if there is one. * (May not be present if no notes exist) */ diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java index dd25953da6..0a33132e28 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java @@ -16,6 +16,8 @@ ==================================================================== */ package org.apache.poi.xslf.usermodel; +import java.io.IOException; + import org.apache.poi.POIXMLDocumentPart; import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.openxml4j.opc.PackageRelationship; @@ -25,8 +27,6 @@ import org.openxmlformats.schemas.presentationml.x2006.main.CTCommonSlideData; import org.openxmlformats.schemas.presentationml.x2006.main.CTNotesSlide; import org.openxmlformats.schemas.presentationml.x2006.main.NotesDocument; -import java.io.IOException; - @Beta public final class XSLFNotes extends XSLFSheet { private CTNotesSlide _notes; @@ -57,12 +57,10 @@ public final class XSLFNotes extends XSLFSheet { setCommonSlideData(_notes.getCSld()); } - private static CTNotesSlide prototype(){ CTNotesSlide ctNotes = CTNotesSlide.Factory.newInstance(); CTCommonSlideData cSld = ctNotes.addNewCSld(); - - // TODO What else is needed for a mininum notes? + cSld.addNewSpTree(); return ctNotes; } @@ -78,6 +76,11 @@ public final class XSLFNotes extends XSLFSheet { } @Override + public XSLFTheme getTheme(){ + return getMasterSheet().getTheme(); + } + + @Override public XSLFNotesMaster getMasterSheet() { for (POIXMLDocumentPart p : getRelations()) { if (p instanceof XSLFNotesMaster){ diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotesMaster.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotesMaster.java index 77ebf05956..7ea875d36e 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotesMaster.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotesMaster.java @@ -16,15 +16,19 @@ ==================================================================== */ package org.apache.poi.xslf.usermodel; +import java.io.IOException; +import java.io.InputStream; + +import org.apache.poi.POIXMLDocumentPart; +import org.apache.poi.POIXMLException; import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.openxml4j.opc.PackageRelationship; import org.apache.poi.util.Beta; import org.apache.xmlbeans.XmlException; +import org.openxmlformats.schemas.drawingml.x2006.main.CTColorMapping; import org.openxmlformats.schemas.presentationml.x2006.main.CTNotesMaster; import org.openxmlformats.schemas.presentationml.x2006.main.NotesMasterDocument; -import java.io.IOException; - /** * Notes master object associated with this layout. * <p> @@ -44,10 +48,11 @@ import java.io.IOException; @Beta public class XSLFNotesMaster extends XSLFSheet { private CTNotesMaster _slide; + private XSLFTheme _theme; XSLFNotesMaster() { super(); - _slide = CTNotesMaster.Factory.newInstance(); + _slide = prototype(); } protected XSLFNotesMaster(PackagePart part, PackageRelationship rel) throws IOException, XmlException { @@ -58,6 +63,21 @@ import java.io.IOException; setCommonSlideData(_slide.getCSld()); } + private static CTNotesMaster prototype() { + InputStream is = XSLFNotesMaster.class.getResourceAsStream("notesMaster.xml"); + if (is == null) { + throw new POIXMLException("Missing resource 'notesMaster.xml'"); + } + + try { + NotesMasterDocument doc = NotesMasterDocument.Factory.parse(is); + CTNotesMaster slide = doc.getNotesMaster(); + return slide; + } catch (Exception e) { + throw new POIXMLException("Can't initialize NotesMaster", e); + } + } + @Override public CTNotesMaster getXmlObject() { return _slide; @@ -72,5 +92,21 @@ import java.io.IOException; public XSLFSheet getMasterSheet() { return null; } - + + @Override + public XSLFTheme getTheme() { + if (_theme == null) { + for (POIXMLDocumentPart p : getRelations()) { + if (p instanceof XSLFTheme) { + _theme = (XSLFTheme) p; + CTColorMapping cmap = _slide.getClrMap(); + if (cmap != null) { + _theme.initColorMap(cmap); + } + break; + } + } + } + return _theme; + } }
\ No newline at end of file diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java index 4f156baa4f..78efb49dd1 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java @@ -999,14 +999,23 @@ public class XSLFTextParagraph implements Iterable<XSLFTextRun>{ "declare namespace p='http://schemas.openxmlformats.org/presentationml/2006/main' " +
"declare namespace a='http://schemas.openxmlformats.org/drawingml/2006/main' " +
".//p:txStyles/p:" + defaultStyleSelector +"/a:lvl" +(level+1)+ "pPr");
- if(o.length == 1){
+ if (o.length == 1){
return (CTTextParagraphProperties)o[0];
+ } else {
+ o = masterSheet.getXmlObject().selectPath(
+ "declare namespace p='http://schemas.openxmlformats.org/presentationml/2006/main' " +
+ "declare namespace a='http://schemas.openxmlformats.org/drawingml/2006/main' " +
+ ".//p:notesStyle/a:lvl" +(level+1)+ "pPr");
+
+ if (o.length == 1){
+ return (CTTextParagraphProperties)o[0];
+ }
+
+ throw new IllegalArgumentException("Failed to fetch default style for " +
+ defaultStyleSelector + " and level=" + level);
}
- throw new IllegalArgumentException("Failed to fetch default style for " +
- defaultStyleSelector + " and level=" + level);
}
-
private boolean fetchParagraphProperty(ParagraphPropertyFetcher visitor){
boolean ok = false;
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTheme.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTheme.java index 41f2109fcd..9c34ea55e3 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTheme.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTheme.java @@ -16,6 +16,13 @@ ==================================================================== */ package org.apache.poi.xslf.usermodel; +import java.io.IOException; +import java.io.OutputStream; +import java.util.HashMap; +import java.util.Map; + +import javax.xml.namespace.QName; + import org.apache.poi.POIXMLDocumentPart; import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.openxml4j.opc.PackageRelationship; @@ -32,12 +39,6 @@ import org.openxmlformats.schemas.drawingml.x2006.main.CTOfficeStyleSheet; import org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraphProperties; import org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument; -import javax.xml.namespace.QName; -import java.io.IOException; -import java.io.OutputStream; -import java.util.HashMap; -import java.util.Map; - /** * A shared style sheet in a .pptx slide show * @@ -52,7 +53,7 @@ public class XSLFTheme extends POIXMLDocumentPart { super(); _theme = CTOfficeStyleSheet.Factory.newInstance(); } - + public XSLFTheme(PackagePart part, PackageRelationship rel) throws IOException, XmlException { super(part, rel); ThemeDocument doc = @@ -60,6 +61,11 @@ public class XSLFTheme extends POIXMLDocumentPart { _theme = doc.getTheme(); initialize(); } + + public void importTheme(XSLFTheme theme) { + _theme = theme.getXmlObject(); + _schemeColors = theme._schemeColors; + } private void initialize(){ CTBaseStyles elems = _theme.getThemeElements(); @@ -111,7 +117,7 @@ public class XSLFTheme extends POIXMLDocumentPart { return _schemeColors.get(name); } - /** + /** * While developing only! */ @Internal diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFNotes.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFNotes.java new file mode 100644 index 0000000000..0eb075acaf --- /dev/null +++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFNotes.java @@ -0,0 +1,97 @@ +/* ====================================================================
+ 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 static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import org.apache.poi.xslf.XSLFTestDataSamples;
+import org.junit.Test;
+
+public class TestXSLFNotes {
+
+ @Test
+ public void createNewNote() {
+
+ XMLSlideShow ppt = new XMLSlideShow();
+ XSLFSlide slide1 = ppt.createSlide();
+
+ assertNull(ppt.getNotesMaster());
+ assertNull(slide1.getNotes());
+
+ XSLFNotes notesSlide = ppt.getNotesSlide(slide1);
+ assertNotNull(ppt.getNotesMaster());
+ assertNotNull(notesSlide);
+
+ String note = null;
+ for (XSLFTextShape shape : notesSlide.getPlaceholders()) {
+ if (shape.getTextType() == Placeholder.BODY) {
+ shape.setText("New Note");
+ note = shape.getText();
+ break;
+ }
+ }
+ assertNotNull(note);
+ assertEquals("New Note", note);
+ }
+
+ @Test
+ public void addNote() {
+
+ XMLSlideShow ppt = XSLFTestDataSamples.openSampleDocument("sample.pptx");
+
+ XSLFSlide slide = ppt.createSlide();
+ XSLFNotes notesSlide = ppt.getNotesSlide(slide);
+ assertNotNull(notesSlide);
+
+ String note = null;
+ for (XSLFTextShape shape : notesSlide.getPlaceholders()) {
+ if (shape.getTextType() == Placeholder.BODY) {
+ shape.setText("New Note");
+ note = shape.getText();
+ break;
+ }
+ }
+ assertNotNull(note);
+ assertEquals("New Note", note);
+ }
+
+ @Test
+ public void replaceNotes() {
+
+ XMLSlideShow ppt = XSLFTestDataSamples.openSampleDocument("sample.pptx");
+
+ for (XSLFSlide slide : ppt.getSlides()) {
+ assertNotNull(slide.getNotes());
+
+ XSLFNotes notesSlide = ppt.getNotesSlide(slide);
+ assertNotNull(notesSlide);
+
+ String note = null;
+ for (XSLFTextShape shape : notesSlide.getPlaceholders()) {
+ if (shape.getTextType() == Placeholder.BODY) {
+ shape.setText("New Note");
+ note = shape.getText();
+ break;
+ }
+ }
+ assertNotNull(note);
+ assertEquals("New Note", note);
+ }
+ }
+}
diff --git a/src/resources/ooxml/org/apache/poi/xslf/usermodel/notesMaster.xml b/src/resources/ooxml/org/apache/poi/xslf/usermodel/notesMaster.xml new file mode 100644 index 0000000000..0a8db65bd8 --- /dev/null +++ b/src/resources/ooxml/org/apache/poi/xslf/usermodel/notesMaster.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<p:notesMaster xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"><p:cSld><p:bg><p:bgRef idx="1001"><a:schemeClr val="bg1"/></p:bgRef></p:bg><p:spTree><p:nvGrpSpPr><p:cNvPr id="1" name=""/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="0" cy="0"/><a:chOff x="0" y="0"/><a:chExt cx="0" cy="0"/></a:xfrm></p:grpSpPr><p:sp><p:nvSpPr><p:cNvPr id="2" name="Header Placeholder 1"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="hdr" sz="quarter"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="3962400" cy="342900"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0"/><a:lstStyle><a:lvl1pPr algn="l"><a:defRPr sz="1200"/></a:lvl1pPr></a:lstStyle><a:p><a:endParaRPr lang="cs-CZ"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id="3" name="Date Placeholder 2"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="dt" idx="1"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x="5180013" y="0"/><a:ext cx="3962400" cy="342900"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0"/><a:lstStyle><a:lvl1pPr algn="r"><a:defRPr sz="1200"/></a:lvl1pPr></a:lstStyle><a:p><a:fld id="{B7268E1E-0E44-426D-905E-8AD9B19D2182}" type="datetimeFigureOut"><a:rPr lang="cs-CZ" smtClean="0"/><a:t>1.7.2013</a:t></a:fld><a:endParaRPr lang="cs-CZ"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id="4" name="Slide Image Placeholder 3"/><p:cNvSpPr><a:spLocks noGrp="1" noRot="1" noChangeAspect="1"/></p:cNvSpPr><p:nvPr><p:ph type="sldImg" idx="2"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x="2857500" y="512763"/><a:ext cx="3429000" cy="2566987"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom><a:noFill/><a:ln w="12700"><a:solidFill><a:prstClr val="black"/></a:solidFill></a:ln></p:spPr><p:txBody><a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0" anchor="ctr"/><a:lstStyle/><a:p><a:endParaRPr lang="cs-CZ"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id="5" name="Notes Placeholder 4"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="body" sz="quarter" idx="3"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x="914400" y="3251200"/><a:ext cx="7315200" cy="3081338"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0"/><a:lstStyle/><a:p><a:pPr lvl="0"/><a:r><a:rPr lang="en-US" smtClean="0"/><a:t>Click to edit Master text styles</a:t></a:r></a:p><a:p><a:pPr lvl="1"/><a:r><a:rPr lang="en-US" smtClean="0"/><a:t>Second level</a:t></a:r></a:p><a:p><a:pPr lvl="2"/><a:r><a:rPr lang="en-US" smtClean="0"/><a:t>Third level</a:t></a:r></a:p><a:p><a:pPr lvl="3"/><a:r><a:rPr lang="en-US" smtClean="0"/><a:t>Fourth level</a:t></a:r></a:p><a:p><a:pPr lvl="4"/><a:r><a:rPr lang="en-US" smtClean="0"/><a:t>Fifth level</a:t></a:r><a:endParaRPr lang="cs-CZ"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id="6" name="Footer Placeholder 5"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="ftr" sz="quarter" idx="4"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x="0" y="6502400"/><a:ext cx="3962400" cy="341313"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0" anchor="b"/><a:lstStyle><a:lvl1pPr algn="l"><a:defRPr sz="1200"/></a:lvl1pPr></a:lstStyle><a:p><a:endParaRPr lang="cs-CZ"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id="7" name="Slide Number Placeholder 6"/><p:cNvSpPr><a:spLocks noGrp="1"/></p:cNvSpPr><p:nvPr><p:ph type="sldNum" sz="quarter" idx="5"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x="5180013" y="6502400"/><a:ext cx="3962400" cy="341313"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0" anchor="b"/><a:lstStyle><a:lvl1pPr algn="r"><a:defRPr sz="1200"/></a:lvl1pPr></a:lstStyle><a:p><a:fld id="{871B2431-D351-4C6E-A3CF-9DFAC0E3E050}" type="slidenum"><a:rPr lang="cs-CZ" smtClean="0"/><a:t>‹#›</a:t></a:fld><a:endParaRPr lang="cs-CZ"/></a:p></p:txBody></p:sp></p:spTree><p:extLst><p:ext uri="{BB962C8B-B14F-4D97-AF65-F5344CB8AC3E}"><p14:creationId xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main" val="1798889115"/></p:ext></p:extLst></p:cSld><p:clrMap bg1="lt1" tx1="dk1" bg2="lt2" tx2="dk2" accent1="accent1" accent2="accent2" accent3="accent3" accent4="accent4" accent5="accent5" accent6="accent6" hlink="hlink" folHlink="folHlink"/><p:notesStyle><a:lvl1pPr marL="0" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl1pPr><a:lvl2pPr marL="457200" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl2pPr><a:lvl3pPr marL="914400" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl3pPr><a:lvl4pPr marL="1371600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl4pPr><a:lvl5pPr marL="1828800" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl5pPr><a:lvl6pPr marL="2286000" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl6pPr><a:lvl7pPr marL="2743200" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl7pPr><a:lvl8pPr marL="3200400" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl8pPr><a:lvl9pPr marL="3657600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1"><a:defRPr sz="1200" kern="1200"><a:solidFill><a:schemeClr val="tx1"/></a:solidFill><a:latin typeface="+mn-lt"/><a:ea typeface="+mn-ea"/><a:cs typeface="+mn-cs"/></a:defRPr></a:lvl9pPr></p:notesStyle></p:notesMaster>
\ No newline at end of file |