J.5.6.1 Navigating Shapes on Slides
In cases where a reader is navigating slides, navigation is complicated by the 2D-nature of the slide. Office Open XML provides a remedy for this by allowing customers to define the reading order, or navigation order, of shapes on a slide through the use of z-order.
Consider the case that a presentation author elects to construct a slide that contains five placeholders: one for the title (A) , two for list headings (B, C) and two lists (D, E). Visually, this could be represented as follows:
Further, suppose that the default tab order (aka reading order) for such a slide, in a LTR-orientation, is A, B, D, C, E.
In DrawingML, this ordering is accomplished by the lexical ordering of the five shapes, A – E. In the shape tree for this slide, you would see this:
<p:spTree>
<p:nvGrpSpPr>…</p:nvGrpSpPr>
<p:grpSpPr>…</p:grpSpPr>
<p:sp>
…
<p:txBody>…
<a:r>
<a:rPr lang="en-US" sz="4800" b="1" dirty="0" smtClean="0"/>
<a:t>A</a:t>
</a:r>…
</p:txBody>
</p:sp>
<p:sp>
…
<p:txBody>…
<a:r>
<a:rPr lang="en-US" sz="4800" dirty="0" smtClean="0"/>
<a:t>B</a:t>
</a:r>…
</p:txBody>
</p:sp>
<p:sp>
…
<p:txBody>…
<a:r>
<a:rPr lang="en-US" sz="4800" b="1" dirty="0" smtClean="0"/>
<a:t>D</a:t>
</a:r>…
</p:txBody>
</p:sp>
<p:sp>
…
<p:txBody>…
<a:r>
<a:rPr lang="en-US" sz="4800" dirty="0" smtClean="0"/>
<a:t>C</a:t>
</a:r>…
</p:txBody>
</p:sp>
<p:sp>
…
<p:txBody>…
<a:r>
<a:rPr lang="en-US" sz="4800" b="1" dirty="0" smtClean="0"/>
<a:t>E</a:t>
</a:r>…
</p:txBody>
</p:sp>
</p:spTree>
If this default reading order was not what the presentation author preferred, the author could specify the z-order for each shape to determine the ordering of the shapes in the shape tree, and by extension, the ordering that shapes would be read in the presentation. The shapes will show up in the shape tree starting with the shape farthest “back” and ending with the shape in the “front.”
Using our example above, if the author wanted to change the ordering of the shapes to facilitate a more RTL-like reading order ( A, C, E, B, D ), she could select shape E and send it to the back, then select shape C and sent it to the back and finally select shape A and send it to the back. Naturally the user experience here is arbitrary; the important aspect is that the ordering of the shapes within the shape tree is changed to the preferred reading order. With these three changes, the shape tree is changed to this:
<p:spTree>
<p:nvGrpSpPr>…</p:nvGrpSpPr>
<p:grpSpPr>…</p:grpSpPr>
<p:sp>
…
<p:txBody>…
<a:r>
<a:rPr lang="en-US" sz="4800" b="1" dirty="0"
<a:t>A</a:t>
</a:r>…
</p:txBody>
</p:sp>
<p:sp>
…
<p:txBody>…
<a:r>
<a:rPr lang="en-US" sz="4800" dirty="0" smtClean="0"/>
<a:t>C</a:t>
</a:r>…
</p:txBody>
</p:sp>
<p:sp>
…
<p:txBody>…
<a:r>
<a:rPr lang="en-US" sz="4800" b="1" dirty="0" smtClean="0"/>
<a:t>E</a:t>
</a:r>…
</p:txBody>
</p:sp>
<p:sp>
…
<p:txBody>…
<a:r>
<a:rPr lang="en-US" sz="4800" dirty="0" smtClean="0"/>
<a:t>B</a:t>
</a:r>…
</p:txBody>
</p:sp>
<p:sp>
…
<p:txBody>…
<a:r>
<a:rPr lang="en-US" sz="4800" b="1" dirty="0" smtClean="0"/>
<a:t>D</a:t>
</a:r>…
</p:txBody>
</p:sp>
</p:spTree>