$style
$style : string|\PhpOffice\PhpWord\Style\AbstractStyle
Style; set protected for a while
Margin border style writer
$style : string|\PhpOffice\PhpWord\Style\AbstractStyle
Style; set protected for a while
$xmlWriter : \PhpOffice\Common\XMLWriter
XML writer
__construct(\PhpOffice\Common\XMLWriter $xmlWriter, string|\PhpOffice\PhpWord\Style\AbstractStyle $style = null)
Create new instance.
\PhpOffice\Common\XMLWriter | $xmlWriter | |
string|\PhpOffice\PhpWord\Style\AbstractStyle | $style |
getXmlWriter() : \PhpOffice\Common\XMLWriter
Get XML Writer
getStyle() : string|\PhpOffice\PhpWord\Style\AbstractStyle
Get Style
writeChildStyle(\PhpOffice\Common\XMLWriter $xmlWriter, string $name, mixed $value)
Write child style.
\PhpOffice\Common\XMLWriter | $xmlWriter | |
string | $name | |
mixed | $value |
writeSide(\PhpOffice\Common\XMLWriter $xmlWriter, string $side, integer $width, string $color = null, string $borderStyle = 'solid')
Write side.
\PhpOffice\Common\XMLWriter | $xmlWriter | |
string | $side | |
integer | $width | |
string | $color | |
string | $borderStyle |
<?php
/**
* This file is part of PHPWord - A pure PHP library for reading and writing
* word processing documents.
*
* PHPWord is free software distributed under the terms of the GNU Lesser
* General Public License version 3 as published by the Free Software Foundation.
*
* For the full copyright and license information, please read the LICENSE
* file that was distributed with this source code. For the full list of
* contributors, visit https://github.com/PHPOffice/PHPWord/contributors.
*
* @see https://github.com/PHPOffice/PHPWord
* @copyright 2010-2018 PHPWord contributors
* @license http://www.gnu.org/licenses/lgpl.txt LGPL version 3
*/
namespace PhpOffice\PhpWord\Writer\Word2007\Style;
use PhpOffice\Common\XMLWriter;
/**
* Margin border style writer
*
* @since 0.10.0
*/
class MarginBorder extends AbstractStyle
{
/**
* Sizes
*
* @var int[]
*/
private $sizes = array();
/**
* Colors
*
* @var string[]
*/
private $colors = array();
/**
* Border styles
*
* @var string[]
*/
private $styles = array();
/**
* Other attributes
*
* @var array
*/
private $attributes = array();
/**
* Write style.
*/
public function write()
{
$xmlWriter = $this->getXmlWriter();
$sides = array('top', 'left', 'right', 'bottom', 'insideH', 'insideV');
foreach ($this->sizes as $i => $size) {
if ($size !== null) {
$color = null;
if (isset($this->colors[$i])) {
$color = $this->colors[$i];
}
$style = isset($this->styles[$i]) ? $this->styles[$i] : 'single';
$this->writeSide($xmlWriter, $sides[$i], $this->sizes[$i], $color, $style);
}
}
}
/**
* Write side.
*
* @param \PhpOffice\Common\XMLWriter $xmlWriter
* @param string $side
* @param int $width
* @param string $color
* @param string $borderStyle
*/
private function writeSide(XMLWriter $xmlWriter, $side, $width, $color = null, $borderStyle = 'solid')
{
$xmlWriter->startElement('w:' . $side);
if (!empty($this->colors)) {
if ($color === null && !empty($this->attributes)) {
if (isset($this->attributes['defaultColor'])) {
$color = $this->attributes['defaultColor'];
}
}
$xmlWriter->writeAttribute('w:val', $borderStyle);
$xmlWriter->writeAttribute('w:sz', $width);
$xmlWriter->writeAttributeIf($color != null, 'w:color', $color);
if (!empty($this->attributes)) {
if (isset($this->attributes['space'])) {
$xmlWriter->writeAttribute('w:space', $this->attributes['space']);
}
}
} else {
$xmlWriter->writeAttribute('w:w', $width);
$xmlWriter->writeAttribute('w:type', 'dxa');
}
$xmlWriter->endElement();
}
/**
* Set sizes.
*
* @param int[] $value
*/
public function setSizes($value)
{
$this->sizes = $value;
}
/**
* Set colors.
*
* @param string[] $value
*/
public function setColors($value)
{
$this->colors = $value;
}
/**
* Set border styles.
*
* @param string[] $value
*/
public function setStyles($value)
{
$this->styles = $value;
}
/**
* Set attributes.
*
* @param array $value
*/
public function setAttributes($value)
{
$this->attributes = $value;
}
}