Layout Placeholders¶
Candidate protocol¶
>>> slide_layout = prs.slide_layouts[0]
>>> slide_layout
<pptx.parts.slidelayout.SlideLayout object at 0x10a5d42d0>
>>> slide_layout.shapes
<pptx.shapes.shapetree.LayoutShapes object at 0x104e60000>
>>> slide_layout.shapes[0]
<pptx.shapes.placeholder.LayoutPlaceholder object at 0x104e60020>
>>> layout_placeholders = slide_layout.placeholders
>>> layout_placeholders
<pptx.shapes.shapetree.LayoutPlaceholders object at 0x104e60040>
>>> len(layout_placeholders)
5
>>> layout_placeholders[1].type
'body'
>>> layout_placeholders[2].idx
10
>>> layout_placeholders.get(idx=0)
<pptx.shapes.placeholder.MasterPlaceholder object at 0x104e60020>
>>> layout_placeholders.get(idx=666)
None
>>> layout_placeholders[1]._sp.spPr.xfrm
None
>>> layout_placeholders[1].width # should inherit from master placehldr
8229600
Example XML¶
Slide layout placeholder:
<p:sp>
<p:nvSpPr>
<p:cNvPr id="3" name="Content Placeholder 2"/>
<p:cNvSpPr>
<a:spLocks noGrp="1"/>
</p:cNvSpPr>
<p:nvPr>
<p:ph idx="1"/>
</p:nvPr>
</p:nvSpPr>
<p:spPr/>
<p:txBody>
<a:bodyPr/>
<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>
... and others through lvl="4", five total
</a:p>
</p:txBody>
</p:sp>
Behaviors¶
- Hypothesis:
- Layout inherits properties from master based only on type (e.g. body, dt), with no bearing on idx value.
- Slide inherits from layout strictly on idx value.
- Need to experiment to see if position and size are inherited on body
placeholder by type or if idx has any effect
- expanded/repackaged, change body ph idx on layout and see if still inherits position.
- result: slide layout still appears with the proper position and size, however the slide placeholder appears at (0, 0) and apparently with size of (0, 0).
- What behavior is exhibited when a slide layout contains two body
placeholders, neither of which has a matching idx value and neither of
which has a specified size or position?
- result: both placeholders are present, directly superimposed upon each other. They both inherit position and fill.
Layout placeholder inheritance¶
Objective: determine layout placeholder inheritee for each ph type
Observations:
Layout placeholder with lyt-ph-type inherits color from master placeholder with mst-ph-type, noting idx value match.
lyt-ph-type | mst-ph-type | notes |
---|---|---|
ctrTitle | title | title layout - idx value matches (None, => 0) |
subTitle | body | title layout - idx value matches (1) |
dt | dt | title layout - idx 10 != 2 |
ftr | ftr | title layout - idx 11 != 3 |
sldNum | sldNum | title layout - idx 12 != 4 |
title | title | bullet layout - idx value matches (None, => 0) |
None (obj) | body | bullet layout - idx value matches (1) |
body | body | sect hdr - idx value matches (1) |
None (obj) | body | two content - idx 2 != 1 |
body | body | comparison - idx 3 != 1 |
pic | body | picture - idx value matches (1) |
chart | body | manual - idx 9 != 1 |
clipArt | body | manual - idx 9 != 1 |
dgm | body | manual - idx 9 != 1 |
media | body | manual - idx 9 != 1 |
tbl | body | manual - idx 9 != 1 |
hdr | repair err | valid only in Notes and Handout Slide |
sldImg | repair err | valid only in Notes and Handout Slide |