Skip to content

Powerpoint2007 reader: Added support for grouped shapes in slides#870

Draft
Wilkolicious wants to merge 1 commit into
PHPOffice:masterfrom
Wilkolicious:powerpoint2007-paragraph-group-support
Draft

Powerpoint2007 reader: Added support for grouped shapes in slides#870
Wilkolicious wants to merge 1 commit into
PHPOffice:masterfrom
Wilkolicious:powerpoint2007-paragraph-group-support

Conversation

@Wilkolicious
Copy link
Copy Markdown

@Wilkolicious Wilkolicious commented Jun 11, 2025

Description

Adds support for loading shapes that are grouped in a slide

Example slide XML of grouped shapes
<?xml version="1.0" encoding="UTF-8"?>
<p:sld 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"
    xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"
    xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main" showMasterSp="1"
    showMasterPhAnim="1">
    <p:cSld>
        <p:bg>
            <p:bgPr>
                <a:solidFill>
                    <a:srgbClr val="1893F8" />
                </a:solidFill>
            </p:bgPr>
        </p:bg>
        <p:spTree>
            <p:grpSp>
                <p:nvGrpSpPr>
                    <p:cNvPr id="191" name="Google Shape;100;p2" />
                    <p:cNvGrpSpPr />
                    <p:nvPr />
                </p:nvGrpSpPr>
                <p:grpSpPr>
                    <a:xfrm>
                        <a:off x="11797752" y="4618213" />
                        <a:ext cx="10123873" cy="2533542" />
                        <a:chOff x="0" y="0" />
                        <a:chExt cx="10123872" cy="2533541" />
                    </a:xfrm>
                </p:grpSpPr>
                <p:sp>
                    <p:nvSpPr>
                        <p:cNvPr id="185" name="Google Shape;101;p2" />
                        <p:cNvSpPr txBox="1" />
                        <p:nvPr />
                    </p:nvSpPr>
                    <p:spPr>
                        <a:xfrm>
                            <a:off x="0" y="0" />
                            <a:ext cx="1531523" cy="554881" />
                        </a:xfrm>
                        <a:prstGeom prst="rect">
                            <a:avLst />
                        </a:prstGeom>
                        <a:noFill />
                        <a:ln w="12700" cap="flat">
                            <a:noFill />
                            <a:miter lim="400000" />
                        </a:ln>
                        <a:effectLst />
                        <a:extLst>
                            <a:ext uri="{C572A759-6A51-4108-AA02-DFA0A04FC94B}">
                                <ma14:wrappingTextBoxFlag val="1"
                                    xmlns:ma14="http://schemas.microsoft.com/office/mac/drawingml/2011/main" />
                            </a:ext>
                        </a:extLst>
                    </p:spPr>
                    <p:txBody>
                        <a:bodyPr wrap="square" lIns="0" tIns="0" rIns="0" bIns="0" numCol="1"
                            anchor="t">
                            <a:spAutoFit />
                        </a:bodyPr>
                        <a:lstStyle>
                            <a:lvl1pPr algn="just" defTabSz="1219200">
                                <a:lnSpc>
                                    <a:spcPct val="166000" />
                                </a:lnSpc>
                                <a:spcBef>
                                    <a:spcPts val="0" />
                                </a:spcBef>
                                <a:defRPr sz="4000">
                                    <a:solidFill>
                                        <a:srgbClr val="B8ED37" />
                                    </a:solidFill>
                                    <a:latin typeface="Arial" />
                                    <a:ea typeface="Arial" />
                                    <a:cs typeface="Arial" />
                                    <a:sym typeface="Arial" />
                                </a:defRPr>
                            </a:lvl1pPr>
                        </a:lstStyle>
                        <a:p>
                            <a:pPr />
                            <a:r>
                                <a:t>Part 1:</a:t>
                            </a:r>
                        </a:p>
                    </p:txBody>
                </p:sp>
                <p:sp>
                    <p:nvSpPr>
                        <p:cNvPr id="186" name="Google Shape;102;p2" />
                        <p:cNvSpPr txBox="1" />
                        <p:nvPr />
                    </p:nvSpPr>
                    <p:spPr>
                        <a:xfrm>
                            <a:off x="0" y="1978660" />
                            <a:ext cx="1531523" cy="554882" />
                        </a:xfrm>
                        <a:prstGeom prst="rect">
                            <a:avLst />
                        </a:prstGeom>
                        <a:noFill />
                        <a:ln w="12700" cap="flat">
                            <a:noFill />
                            <a:miter lim="400000" />
                        </a:ln>
                        <a:effectLst />
                        <a:extLst>
                            <a:ext uri="{C572A759-6A51-4108-AA02-DFA0A04FC94B}">
                                <ma14:wrappingTextBoxFlag val="1"
                                    xmlns:ma14="http://schemas.microsoft.com/office/mac/drawingml/2011/main" />
                            </a:ext>
                        </a:extLst>
                    </p:spPr>
                    <p:txBody>
                        <a:bodyPr wrap="square" lIns="0" tIns="0" rIns="0" bIns="0" numCol="1"
                            anchor="t">
                            <a:spAutoFit />
                        </a:bodyPr>
                        <a:lstStyle>
                            <a:lvl1pPr algn="just" defTabSz="1219200">
                                <a:lnSpc>
                                    <a:spcPct val="166000" />
                                </a:lnSpc>
                                <a:spcBef>
                                    <a:spcPts val="0" />
                                </a:spcBef>
                                <a:defRPr sz="4000">
                                    <a:solidFill>
                                        <a:srgbClr val="B8ED37" />
                                    </a:solidFill>
                                    <a:latin typeface="Arial" />
                                    <a:ea typeface="Arial" />
                                    <a:cs typeface="Arial" />
                                    <a:sym typeface="Arial" />
                                </a:defRPr>
                            </a:lvl1pPr>
                        </a:lstStyle>
                        <a:p>
                            <a:pPr />
                            <a:r>
                                <a:t>Part 3:</a:t>
                            </a:r>
                        </a:p>
                    </p:txBody>
                </p:sp>
                <p:sp>
                    <p:nvSpPr>
                        <p:cNvPr id="187" name="Google Shape;103;p2" />
                        <p:cNvSpPr txBox="1" />
                        <p:nvPr />
                    </p:nvSpPr>
                    <p:spPr>
                        <a:xfrm>
                            <a:off x="0" y="989330" />
                            <a:ext cx="1531523" cy="554882" />
                        </a:xfrm>
                        <a:prstGeom prst="rect">
                            <a:avLst />
                        </a:prstGeom>
                        <a:noFill />
                        <a:ln w="12700" cap="flat">
                            <a:noFill />
                            <a:miter lim="400000" />
                        </a:ln>
                        <a:effectLst />
                        <a:extLst>
                            <a:ext uri="{C572A759-6A51-4108-AA02-DFA0A04FC94B}">
                                <ma14:wrappingTextBoxFlag val="1"
                                    xmlns:ma14="http://schemas.microsoft.com/office/mac/drawingml/2011/main" />
                            </a:ext>
                        </a:extLst>
                    </p:spPr>
                    <p:txBody>
                        <a:bodyPr wrap="square" lIns="0" tIns="0" rIns="0" bIns="0" numCol="1"
                            anchor="t">
                            <a:spAutoFit />
                        </a:bodyPr>
                        <a:lstStyle>
                            <a:lvl1pPr algn="just" defTabSz="1219200">
                                <a:lnSpc>
                                    <a:spcPct val="166000" />
                                </a:lnSpc>
                                <a:spcBef>
                                    <a:spcPts val="0" />
                                </a:spcBef>
                                <a:defRPr sz="4000">
                                    <a:solidFill>
                                        <a:srgbClr val="B8ED37" />
                                    </a:solidFill>
                                    <a:latin typeface="Arial" />
                                    <a:ea typeface="Arial" />
                                    <a:cs typeface="Arial" />
                                    <a:sym typeface="Arial" />
                                </a:defRPr>
                            </a:lvl1pPr>
                        </a:lstStyle>
                        <a:p>
                            <a:pPr />
                            <a:r>
                                <a:t>Part 2:</a:t>
                            </a:r>
                        </a:p>
                    </p:txBody>
                </p:sp>
                <p:sp>
                    <p:nvSpPr>
                        <p:cNvPr id="188" name="Google Shape;104;p2" />
                        <p:cNvSpPr txBox="1" />
                        <p:nvPr />
                    </p:nvSpPr>
                    <p:spPr>
                        <a:xfrm>
                            <a:off x="1721419" y="0" />
                            <a:ext cx="8402454" cy="554881" />
                        </a:xfrm>
                        <a:prstGeom prst="rect">
                            <a:avLst />
                        </a:prstGeom>
                        <a:noFill />
                        <a:ln w="12700" cap="flat">
                            <a:noFill />
                            <a:miter lim="400000" />
                        </a:ln>
                        <a:effectLst />
                        <a:extLst>
                            <a:ext uri="{C572A759-6A51-4108-AA02-DFA0A04FC94B}">
                                <ma14:wrappingTextBoxFlag val="1"
                                    xmlns:ma14="http://schemas.microsoft.com/office/mac/drawingml/2011/main" />
                            </a:ext>
                        </a:extLst>
                    </p:spPr>
                    <p:txBody>
                        <a:bodyPr wrap="square" lIns="0" tIns="0" rIns="0" bIns="0" numCol="1"
                            anchor="t">
                            <a:spAutoFit />
                        </a:bodyPr>
                        <a:lstStyle>
                            <a:lvl1pPr defTabSz="1219200">
                                <a:lnSpc>
                                    <a:spcPct val="166000" />
                                </a:lnSpc>
                                <a:spcBef>
                                    <a:spcPts val="0" />
                                </a:spcBef>
                                <a:defRPr sz="4000">
                                    <a:latin typeface="Arial" />
                                    <a:ea typeface="Arial" />
                                    <a:cs typeface="Arial" />
                                    <a:sym typeface="Arial" />
                                </a:defRPr>
                            </a:lvl1pPr>
                        </a:lstStyle>
                        <a:p>
                            <a:pPr />
                            <a:r>
                                <a:t>Introduction</a:t>
                            </a:r>
                        </a:p>
                    </p:txBody>
                </p:sp>
                <p:sp>
                    <p:nvSpPr>
                        <p:cNvPr id="189" name="Google Shape;105;p2" />
                        <p:cNvSpPr txBox="1" />
                        <p:nvPr />
                    </p:nvSpPr>
                    <p:spPr>
                        <a:xfrm>
                            <a:off x="1721419" y="1978660" />
                            <a:ext cx="8402454" cy="554882" />
                        </a:xfrm>
                        <a:prstGeom prst="rect">
                            <a:avLst />
                        </a:prstGeom>
                        <a:noFill />
                        <a:ln w="12700" cap="flat">
                            <a:noFill />
                            <a:miter lim="400000" />
                        </a:ln>
                        <a:effectLst />
                        <a:extLst>
                            <a:ext uri="{C572A759-6A51-4108-AA02-DFA0A04FC94B}">
                                <ma14:wrappingTextBoxFlag val="1"
                                    xmlns:ma14="http://schemas.microsoft.com/office/mac/drawingml/2011/main" />
                            </a:ext>
                        </a:extLst>
                    </p:spPr>
                    <p:txBody>
                        <a:bodyPr wrap="square" lIns="0" tIns="0" rIns="0" bIns="0" numCol="1"
                            anchor="t">
                            <a:spAutoFit />
                        </a:bodyPr>
                        <a:lstStyle>
                            <a:lvl1pPr defTabSz="1219200">
                                <a:lnSpc>
                                    <a:spcPct val="166000" />
                                </a:lnSpc>
                                <a:spcBef>
                                    <a:spcPts val="0" />
                                </a:spcBef>
                                <a:defRPr sz="4000">
                                    <a:latin typeface="Arial" />
                                    <a:ea typeface="Arial" />
                                    <a:cs typeface="Arial" />
                                    <a:sym typeface="Arial" />
                                </a:defRPr>
                            </a:lvl1pPr>
                        </a:lstStyle>
                        <a:p>
                            <a:pPr />
                            <a:r>
                                <a:t>how we tackled the project </a:t>
                            </a:r>
                        </a:p>
                    </p:txBody>
                </p:sp>
                <p:sp>
                    <p:nvSpPr>
                        <p:cNvPr id="190" name="Google Shape;106;p2" />
                        <p:cNvSpPr txBox="1" />
                        <p:nvPr />
                    </p:nvSpPr>
                    <p:spPr>
                        <a:xfrm>
                            <a:off x="1721419" y="989330" />
                            <a:ext cx="8402454" cy="554882" />
                        </a:xfrm>
                        <a:prstGeom prst="rect">
                            <a:avLst />
                        </a:prstGeom>
                        <a:noFill />
                        <a:ln w="12700" cap="flat">
                            <a:noFill />
                            <a:miter lim="400000" />
                        </a:ln>
                        <a:effectLst />
                        <a:extLst>
                            <a:ext uri="{C572A759-6A51-4108-AA02-DFA0A04FC94B}">
                                <ma14:wrappingTextBoxFlag val="1"
                                    xmlns:ma14="http://schemas.microsoft.com/office/mac/drawingml/2011/main" />
                            </a:ext>
                        </a:extLst>
                    </p:spPr>
                    <p:txBody>
                        <a:bodyPr wrap="square" lIns="0" tIns="0" rIns="0" bIns="0" numCol="1"
                            anchor="t">
                            <a:spAutoFit />
                        </a:bodyPr>
                        <a:lstStyle>
                            <a:lvl1pPr defTabSz="1219200">
                                <a:lnSpc>
                                    <a:spcPct val="166000" />
                                </a:lnSpc>
                                <a:spcBef>
                                    <a:spcPts val="0" />
                                </a:spcBef>
                                <a:defRPr sz="4000">
                                    <a:latin typeface="Arial" />
                                    <a:ea typeface="Arial" />
                                    <a:cs typeface="Arial" />
                                    <a:sym typeface="Arial" />
                                </a:defRPr>
                            </a:lvl1pPr>
                        </a:lstStyle>
                        <a:p>
                            <a:pPr />
                            <a:r>
                                <a:t>Description of the task</a:t>
                            </a:r>
                        </a:p>
                    </p:txBody>
                </p:sp>
            </p:grpSp>
            <p:grpSp>
                <p:nvGrpSpPr>
                    <p:cNvPr id="194" name="Google Shape;107;p2" />
                    <p:cNvGrpSpPr />
                    <p:nvPr />
                </p:nvGrpSpPr>
                <p:grpSpPr>
                    <a:xfrm>
                        <a:off x="1371599" y="576035" />
                        <a:ext cx="7622621" cy="732016" />
                        <a:chOff x="0" y="0" />
                        <a:chExt cx="7622619" cy="732014" />
                    </a:xfrm>
                </p:grpSpPr>
                <p:sp>
                    <p:nvSpPr>
                        <p:cNvPr id="192" name="Google Shape;108;p2" />
                        <p:cNvSpPr txBox="1" />
                        <p:nvPr />
                    </p:nvSpPr>
                    <p:spPr>
                        <a:xfrm>
                            <a:off x="1051938" y="59091" />
                            <a:ext cx="6570682" cy="456605" />
                        </a:xfrm>
                        <a:prstGeom prst="rect">
                            <a:avLst />
                        </a:prstGeom>
                        <a:noFill />
                        <a:ln w="12700" cap="flat">
                            <a:noFill />
                            <a:miter lim="400000" />
                        </a:ln>
                        <a:effectLst />
                        <a:extLst>
                            <a:ext uri="{C572A759-6A51-4108-AA02-DFA0A04FC94B}">
                                <ma14:wrappingTextBoxFlag val="1"
                                    xmlns:ma14="http://schemas.microsoft.com/office/mac/drawingml/2011/main" />
                            </a:ext>
                        </a:extLst>
                    </p:spPr>
                    <p:txBody>
                        <a:bodyPr wrap="square" lIns="0" tIns="0" rIns="0" bIns="0" numCol="1"
                            anchor="t">
                            <a:spAutoFit />
                        </a:bodyPr>
                        <a:lstStyle>
                            <a:lvl1pPr defTabSz="1219200">
                                <a:lnSpc>
                                    <a:spcPct val="140000" />
                                </a:lnSpc>
                                <a:spcBef>
                                    <a:spcPts val="0" />
                                </a:spcBef>
                                <a:defRPr sz="3200">
                                    <a:solidFill>
                                        <a:srgbClr val="1893F8" />
                                    </a:solidFill>
                                    <a:latin typeface="Arial" />
                                    <a:ea typeface="Arial" />
                                    <a:cs typeface="Arial" />
                                    <a:sym typeface="Arial" />
                                </a:defRPr>
                            </a:lvl1pPr>
                        </a:lstStyle>
                        <a:p>
                            <a:pPr />
                            <a:r>
                                <a:t>TEAM4</a:t>
                            </a:r>
                        </a:p>
                    </p:txBody>
                </p:sp>
                <p:pic>
                    <p:nvPicPr>
                        <p:cNvPr id="193" name="Google Shape;109;p2" descr="Google Shape;109;p2" />
                        <p:cNvPicPr>
                            <a:picLocks noChangeAspect="1" />
                        </p:cNvPicPr>
                        <p:nvPr />
                    </p:nvPicPr>
                    <p:blipFill>
                        <a:blip r:embed="rId3">
                            <a:extLst />
                        </a:blip>
                        <a:stretch>
                            <a:fillRect />
                        </a:stretch>
                    </p:blipFill>
                    <p:spPr>
                        <a:xfrm>
                            <a:off x="0" y="0" />
                            <a:ext cx="725361" cy="732015" />
                        </a:xfrm>
                        <a:prstGeom prst="rect">
                            <a:avLst />
                        </a:prstGeom>
                        <a:ln w="12700" cap="flat">
                            <a:noFill />
                            <a:miter lim="400000" />
                        </a:ln>
                        <a:effectLst />
                    </p:spPr>
                </p:pic>
            </p:grpSp>
        </p:spTree>
    </p:cSld>
    <p:clrMapOvr>
        <a:masterClrMapping />
    </p:clrMapOvr>
    <p:transition xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main" spd="med"
        advClick="1" />
</p:sld>

Checklist:

  • My CI is 🟢
  • I have covered by unit tests my new code (check build/coverage for coverage report)
  • I have updated the documentation to describe the changes
  • I have updated the changelog

@coveralls
Copy link
Copy Markdown

Coverage Status

coverage: 91.642% (+0.003%) from 91.639%
when pulling 8b2f8f9 on Wilkolicious:powerpoint2007-paragraph-group-support
into b9cdcd4 on PHPOffice:master.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants