protected function writeShapeGroup(XMLWriter $objWriter, Group $group, &$shapeId)
{
// p:grpSp
$objWriter->startElement('p:grpSp');
// p:nvGrpSpPr
$objWriter->startElement('p:nvGrpSpPr');
// p:cNvPr
$objWriter->startElement('p:cNvPr');
$objWriter->writeAttribute('name', 'Group ' . $shapeId++);
$objWriter->writeAttribute('id', $shapeId);
$objWriter->endElement();
// p:cNvPr
// NOTE: Re: $shapeId This seems to be how PowerPoint 2010 does business.
// p:cNvGrpSpPr
$objWriter->writeElement('p:cNvGrpSpPr', null);
// p:nvPr
$objWriter->writeElement('p:nvPr', null);
$objWriter->endElement();
// p:nvGrpSpPr
// p:grpSpPr
$objWriter->startElement('p:grpSpPr');
// a:xfrm
$objWriter->startElement('a:xfrm');
// a:off
$objWriter->startElement('a:off');
$objWriter->writeAttribute('x', CommonDrawing::pixelsToEmu($group->getOffsetX()));
$objWriter->writeAttribute('y', CommonDrawing::pixelsToEmu($group->getOffsetY()));
$objWriter->endElement();
// a:off
// a:ext
$objWriter->startElement('a:ext');
$objWriter->writeAttribute('cx', CommonDrawing::pixelsToEmu($group->getExtentX()));
$objWriter->writeAttribute('cy', CommonDrawing::pixelsToEmu($group->getExtentY()));
$objWriter->endElement();
// a:ext
// a:chOff
$objWriter->startElement('a:chOff');
$objWriter->writeAttribute('x', CommonDrawing::pixelsToEmu($group->getOffsetX()));
$objWriter->writeAttribute('y', CommonDrawing::pixelsToEmu($group->getOffsetY()));
$objWriter->endElement();
// a:chOff
// a:chExt
$objWriter->startElement('a:chExt');
$objWriter->writeAttribute('cx', CommonDrawing::pixelsToEmu($group->getExtentX()));
$objWriter->writeAttribute('cy', CommonDrawing::pixelsToEmu($group->getExtentY()));
$objWriter->endElement();
// a:chExt
$objWriter->endElement();
// a:xfrm
$objWriter->endElement();
// p:grpSpPr
$this->writeShapeCollection($objWriter, $group->getShapeCollection(), $shapeId);
$objWriter->endElement();
// p:grpSp
}