protected function writeParagraphs(XMLWriter $objWriter, $paragraphs, $bIsPlaceholder = false)
{
// Loop trough paragraphs
foreach ($paragraphs as $paragraph) {
// a:p
$objWriter->startElement('a:p');
// a:pPr
if (!$bIsPlaceholder) {
$objWriter->startElement('a:pPr');
$objWriter->writeAttribute('algn', $paragraph->getAlignment()->getHorizontal());
$objWriter->writeAttribute('fontAlgn', $paragraph->getAlignment()->getVertical());
$objWriter->writeAttribute('marL', CommonDrawing::pixelsToEmu($paragraph->getAlignment()->getMarginLeft()));
$objWriter->writeAttribute('marR', CommonDrawing::pixelsToEmu($paragraph->getAlignment()->getMarginRight()));
$objWriter->writeAttribute('indent', CommonDrawing::pixelsToEmu($paragraph->getAlignment()->getIndent()));
$objWriter->writeAttribute('lvl', $paragraph->getAlignment()->getLevel());
// Bullet type specified?
if ($paragraph->getBulletStyle()->getBulletType() != Bullet::TYPE_NONE) {
// a:buFont
$objWriter->startElement('a:buFont');
$objWriter->writeAttribute('typeface', $paragraph->getBulletStyle()->getBulletFont());
$objWriter->endElement();
if ($paragraph->getBulletStyle()->getBulletType() == Bullet::TYPE_BULLET) {
// a:buChar
$objWriter->startElement('a:buChar');
$objWriter->writeAttribute('char', $paragraph->getBulletStyle()->getBulletChar());
$objWriter->endElement();
} elseif ($paragraph->getBulletStyle()->getBulletType() == Bullet::TYPE_NUMERIC) {
// a:buAutoNum
$objWriter->startElement('a:buAutoNum');
$objWriter->writeAttribute('type', $paragraph->getBulletStyle()->getBulletNumericStyle());
if ($paragraph->getBulletStyle()->getBulletNumericStartAt() != 1) {
$objWriter->writeAttribute('startAt', $paragraph->getBulletStyle()->getBulletNumericStartAt());
}
$objWriter->endElement();
}
if ($paragraph->getBulletStyle()->getBulletColor() instanceof Color) {
$objWriter->startElement('a:buClr');
$this->writeColor($objWriter, $paragraph->getBulletStyle()->getBulletColor());
$objWriter->endElement();
}
}
$objWriter->startElement('a:lnSpc');
$objWriter->startElement('a:spcPct');
$objWriter->writeAttribute('val', $paragraph->getLineSpacing() * 1000);
$objWriter->endElement();
$objWriter->endElement();
$objWriter->endElement();
}
// Loop trough rich text elements
$elements = $paragraph->getRichTextElements();
foreach ($elements as $element) {
if ($element instanceof BreakElement) {
// a:br
$objWriter->writeElement('a:br', null);
} elseif ($element instanceof Run || $element instanceof TextElement) {
// a:r
$objWriter->startElement('a:r');
// a:rPr
if ($element instanceof Run && !$bIsPlaceholder) {
// a:rPr
$objWriter->startElement('a:rPr');
// Lang
$objWriter->writeAttribute('lang', $element->getLanguage() ? $element->getLanguage() : 'en-US');
$objWriter->writeAttributeIf($element->getFont()->isBold(), 'b', '1');
$objWriter->writeAttributeIf($element->getFont()->isItalic(), 'i', '1');
$objWriter->writeAttributeIf($element->getFont()->isStrikethrough(), 'strike', 'sngStrike');
// Size
$objWriter->writeAttribute('sz', $element->getFont()->getSize() * 100);
// Underline
$objWriter->writeAttribute('u', $element->getFont()->getUnderline());
// Superscript / subscript
$objWriter->writeAttributeIf($element->getFont()->isSuperScript(), 'baseline', '30000');
$objWriter->writeAttributeIf($element->getFont()->isSubScript(), 'baseline', '-25000');
// Color - a:solidFill
$objWriter->startElement('a:solidFill');
$this->writeColor($objWriter, $element->getFont()->getColor());
$objWriter->endElement();
// Font - a:latin
$objWriter->startElement('a:latin');
$objWriter->writeAttribute('typeface', $element->getFont()->getName());
$objWriter->endElement();
// a:hlinkClick
$this->writeHyperlink($objWriter, $element);
$objWriter->endElement();
}
// t
$objWriter->startElement('a:t');
$objWriter->writeCData(Text::controlCharacterPHP2OOXML($element->getText()));
$objWriter->endElement();
$objWriter->endElement();
}
}
$objWriter->endElement();
}
}