protected function writeNote(Note $pNote)
{
// Create XML writer
$objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
// XML header
$objWriter->startDocument('1.0', 'UTF-8', 'yes');
// p:notes
$objWriter->startElement('p:notes');
$objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
$objWriter->writeAttribute('xmlns:p', 'http://schemas.openxmlformats.org/presentationml/2006/main');
$objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
// p:cSld
$objWriter->startElement('p:cSld');
// p:spTree
$objWriter->startElement('p:spTree');
// p:nvGrpSpPr
$objWriter->startElement('p:nvGrpSpPr');
// p:cNvPr
$objWriter->startElement('p:cNvPr');
$objWriter->writeAttribute('id', '1');
$objWriter->writeAttribute('name', '');
$objWriter->endElement();
// p:cNvGrpSpPr
$objWriter->writeElement('p:cNvGrpSpPr', null);
// p:nvPr
$objWriter->writeElement('p:nvPr', null);
// ## p:nvGrpSpPr
$objWriter->endElement();
// p:grpSpPr
$objWriter->startElement('p:grpSpPr');
// a:xfrm
$objWriter->startElement('a:xfrm');
// a:off
$objWriter->startElement('a:off');
$objWriter->writeAttribute('x', CommonDrawing::pixelsToEmu($pNote->getOffsetX()));
$objWriter->writeAttribute('y', CommonDrawing::pixelsToEmu($pNote->getOffsetY()));
$objWriter->endElement();
// a:off
// a:ext
$objWriter->startElement('a:ext');
$objWriter->writeAttribute('cx', CommonDrawing::pixelsToEmu($pNote->getExtentX()));
$objWriter->writeAttribute('cy', CommonDrawing::pixelsToEmu($pNote->getExtentY()));
$objWriter->endElement();
// a:ext
// a:chOff
$objWriter->startElement('a:chOff');
$objWriter->writeAttribute('x', CommonDrawing::pixelsToEmu($pNote->getOffsetX()));
$objWriter->writeAttribute('y', CommonDrawing::pixelsToEmu($pNote->getOffsetY()));
$objWriter->endElement();
// a:chOff
// a:chExt
$objWriter->startElement('a:chExt');
$objWriter->writeAttribute('cx', CommonDrawing::pixelsToEmu($pNote->getExtentX()));
$objWriter->writeAttribute('cy', CommonDrawing::pixelsToEmu($pNote->getExtentY()));
$objWriter->endElement();
// a:chExt
// ## a:xfrm
$objWriter->endElement();
// ## p:grpSpPr
$objWriter->endElement();
// p:sp
$objWriter->startElement('p:sp');
// p:nvSpPr
$objWriter->startElement('p:nvSpPr');
$objWriter->startElement('p:cNvPr');
$objWriter->writeAttribute('id', '1');
$objWriter->writeAttribute('name', 'Notes Placeholder');
$objWriter->endElement();
// p:cNvSpPr
$objWriter->startElement('p:cNvSpPr');
//a:spLocks
$objWriter->startElement('a:spLocks');
$objWriter->writeAttribute('noGrp', '1');
$objWriter->endElement();
// ## p:cNvSpPr
$objWriter->endElement();
// p:nvPr
$objWriter->startElement('p:nvPr');
$objWriter->startElement('p:ph');
$objWriter->writeAttribute('type', 'body');
$objWriter->writeAttribute('idx', '1');
$objWriter->endElement();
// ## p:nvPr
$objWriter->endElement();
// ## p:nvSpPr
$objWriter->endElement();
$objWriter->writeElement('p:spPr', null);
// p:txBody
$objWriter->startElement('p:txBody');
$objWriter->writeElement('a:bodyPr', null);
$objWriter->writeElement('a:lstStyle', null);
// Loop shapes
$shapes = $pNote->getShapeCollection();
foreach ($shapes as $shape) {
// Check type
if ($shape instanceof RichText) {
$paragraphs = $shape->getParagraphs();
$this->writeParagraphs($objWriter, $paragraphs);
}
}
// ## p:txBody
$objWriter->endElement();
// ## p:sp
$objWriter->endElement();
// ## p:spTree
$objWriter->endElement();
// ## p:cSld
$objWriter->endElement();
// ## p:notes
$objWriter->endElement();
// Return
return $objWriter->getData();
}