diff --git a/docs/styles.rst b/docs/styles.rst
index 18a9c2eca3..06d983e53d 100644
--- a/docs/styles.rst
+++ b/docs/styles.rst
@@ -201,6 +201,7 @@ Available Chart style options:
- ``colors``. A list of colors to use in the chart.
- ``title``. The title for the chart.
- ``showLegend``. Show legend, *true* or *false*.
+- ``LegendPosition``. Legend position, *r* (default), *b*, *t*, *l* or *tr*.
- ``categoryLabelPosition``. Label position for categories, *nextTo* (default), *low* or *high*.
- ``valueLabelPosition``. Label position for values, *nextTo* (default), *low* or *high*.
- ``categoryAxisTitle``. The title for the category axis.
diff --git a/samples/Sample_32_Chart.php b/samples/Sample_32_Chart.php
index c24a6f8e37..bfb9ffe86b 100644
--- a/samples/Sample_32_Chart.php
+++ b/samples/Sample_32_Chart.php
@@ -25,6 +25,9 @@
$series3 = array(8, 3, 2, 5, 4);
$showGridLines = false;
$showAxisLabels = false;
+$showLegend = true;
+$legendPosition = 't';
+// r = right, l = left, t = top, b = bottom, tr = top right
foreach ($chartTypes as $chartType) {
$section->addTitle(ucfirst($chartType), 2);
@@ -33,6 +36,8 @@
$chart->getStyle()->setShowGridX($showGridLines);
$chart->getStyle()->setShowGridY($showGridLines);
$chart->getStyle()->setShowAxisLabels($showAxisLabels);
+ $chart->getStyle()->setShowLegend($showLegend);
+ $chart->getStyle()->setLegendPosition($legendPosition);
if (in_array($chartType, $twoSeries)) {
$chart->addSeries($categories, $series2);
}
diff --git a/src/PhpWord/Shared/Html.php b/src/PhpWord/Shared/Html.php
index 6fa2a64dd3..ac90b5f04b 100644
--- a/src/PhpWord/Shared/Html.php
+++ b/src/PhpWord/Shared/Html.php
@@ -115,7 +115,7 @@ protected static function parseInlineStyle($node, $styles = array())
// tables, cells
if (false !== strpos($val, '%')) {
// e.g.
or
- $styles['width'] = intval($val) * 50;
+ $styles['width'] = (int) $val * 50;
$styles['unit'] = \PhpOffice\PhpWord\SimpleType\TblWidth::PERCENT;
} else {
// e.g. , where "2" = 2px (always pixels)
- $val = intval($val).'px';
+ $val = (int) $val . 'px';
$styles['cellSpacing'] = Converter::cssToTwip($val);
break;
case 'bgcolor':
@@ -693,7 +693,7 @@ protected static function parseStyle($attribute, $styles)
// This may be adjusted, if better ratio or formula found.
// BC change: up to ver. 0.17.0 was $size converted to points - Converter::cssToPoint($size)
$size = Converter::cssToTwip($matches[1]);
- $size = intval($size / 2);
+ $size = (int) ($size / 2);
// valid variants may be e.g. borderSize, borderTopSize, borderLeftColor, etc ..
$styles["border{$which}Size"] = $size; // twips
$styles["border{$which}Color"] = trim($matches[2], '#');
@@ -871,9 +871,9 @@ protected static function mapAlign($cssAlignment)
}
/**
- * Transforms a HTML/CSS alignment into a \PhpOffice\PhpWord\SimpleType\Jc
+ * Transforms a HTML/CSS vertical alignment
*
- * @param string $cssAlignment
+ * @param string $alignment
* @return string|null
*/
protected static function mapAlignVertical($alignment)
@@ -901,10 +901,10 @@ protected static function mapAlignVertical($alignment)
}
/**
- * Map list style for ordered list
- *
- * @param string $cssListType
- */
+ * Map list style for ordered list
+ *
+ * @param string $cssListType
+ */
protected static function mapListType($cssListType)
{
switch ($cssListType) {
@@ -959,12 +959,12 @@ protected static function parseLink($node, $element, &$styles)
}
/**
- * Render horizontal rule
- * Note: Word rule is not the same as HTML's since it does not support width and thus neither alignment
- *
- * @param \DOMNode $node
- * @param \PhpOffice\PhpWord\Element\AbstractContainer $element
- */
+ * Render horizontal rule
+ * Note: Word rule is not the same as HTML's since it does not support width and thus neither alignment
+ *
+ * @param \DOMNode $node
+ * @param \PhpOffice\PhpWord\Element\AbstractContainer $element
+ */
protected static function parseHorizRule($node, $element)
{
$styles = self::parseInlineStyle($node);
@@ -972,19 +972,19 @@ protected static function parseHorizRule($node, $element)
// is implemented as an empty paragraph - extending 100% inside the section
// Some properties may be controlled, e.g.
- $fontStyle = $styles + ['size' => 3];
+ $fontStyle = $styles + array('size' => 3);
- $paragraphStyle = $styles + [
- 'lineHeight' => 0.25, // multiply default line height - e.g. 1, 1.5 etc
- 'spacing' => 0, // twip
- 'spaceBefore' => 120, // twip, 240/2 (default line height)
- 'spaceAfter' => 120, // twip
- 'borderBottomSize' => empty($styles['line-height']) ? 1 : $styles['line-height'],
+ $paragraphStyle = $styles + array(
+ 'lineHeight' => 0.25, // multiply default line height - e.g. 1, 1.5 etc
+ 'spacing' => 0, // twip
+ 'spaceBefore' => 120, // twip, 240/2 (default line height)
+ 'spaceAfter' => 120, // twip
+ 'borderBottomSize' => empty($styles['line-height']) ? 1 : $styles['line-height'],
'borderBottomColor' => empty($styles['color']) ? '000000' : $styles['color'],
'borderBottomStyle' => 'single', // same as "solid"
- ];
+ );
- $element->addText("", $fontStyle, $paragraphStyle);
+ $element->addText('', $fontStyle, $paragraphStyle);
// Notes: cannot be:
// - table - throws error "cannot be inside textruns", e.g. lists
diff --git a/src/PhpWord/Style/Chart.php b/src/PhpWord/Style/Chart.php
index 06b4829c3c..c02c0af4d8 100644
--- a/src/PhpWord/Style/Chart.php
+++ b/src/PhpWord/Style/Chart.php
@@ -66,6 +66,14 @@ class Chart extends AbstractStyle
*/
private $showLegend = false;
+ /**
+ * Chart legend Position.
+ * Possible values are 'r', 't', 'b', 'l', 'tr'
+ *
+ * @var string
+ */
+ private $legendPosition = 'r';
+
/**
* A list of display options for data labels
*
@@ -233,6 +241,7 @@ public function getColors()
* Set the colors to use in a chart.
*
* @param array $value a list of colors to use in the chart
+ * @return self
*/
public function setColors($value = array())
{
@@ -255,6 +264,7 @@ public function getTitle()
* Set the chart title
*
* @param string $value
+ * @return self
*/
public function setTitle($value = null)
{
@@ -277,6 +287,7 @@ public function isShowLegend()
* Set chart legend visibility
*
* @param bool $value
+ * @return self
*/
public function setShowLegend($value = false)
{
@@ -285,6 +296,37 @@ public function setShowLegend($value = false)
return $this;
}
+ /**
+ * Get chart legend position
+ *
+ * @return string
+ */
+ public function getLegendPosition()
+ {
+ return $this->legendPosition;
+ }
+
+ /**
+ * Set chart legend position. choices:
+ * "r" - right of chart
+ * "b" - bottom of chart
+ * "t" - top of chart
+ * "l" - left of chart
+ * "tr" - top right of chart
+ *
+ * default: right
+ *
+ * @param string $legendPosition
+ * @return self
+ */
+ public function setLegendPosition($legendPosition = 'r')
+ {
+ $enum = array('r', 'b', 't', 'l', 'tr');
+ $this->legendPosition = $this->setEnumVal($legendPosition, $enum, $this->legendPosition);
+
+ return $this;
+ }
+
/*
* Show labels for axis
*
@@ -328,7 +370,10 @@ public function setDataLabelOptions($values = array())
{
foreach (array_keys($this->dataLabelOptions) as $option) {
if (isset($values[$option])) {
- $this->dataLabelOptions[$option] = $this->setBoolVal($values[$option], $this->dataLabelOptions[$option]);
+ $this->dataLabelOptions[$option] = $this->setBoolVal(
+ $values[$option],
+ $this->dataLabelOptions[$option]
+ );
}
}
}
diff --git a/src/PhpWord/Writer/Word2007/Part/Chart.php b/src/PhpWord/Writer/Word2007/Part/Chart.php
index e0d1752b31..e3b56eaa81 100644
--- a/src/PhpWord/Writer/Word2007/Part/Chart.php
+++ b/src/PhpWord/Writer/Word2007/Part/Chart.php
@@ -131,6 +131,7 @@ private function writePlotArea(XMLWriter $xmlWriter)
$title = $style->getTitle();
$showLegend = $style->isShowLegend();
+ $legendPosition = $style->getLegendPosition();
//Chart title
if ($title) {
@@ -154,7 +155,7 @@ private function writePlotArea(XMLWriter $xmlWriter)
//Chart legend
if ($showLegend) {
- $xmlWriter->writeRaw('');
+ $xmlWriter->writeRaw('');
}
$xmlWriter->startElement('c:plotArea');
diff --git a/tests/PhpWord/Shared/HtmlTest.php b/tests/PhpWord/Shared/HtmlTest.php
index 7a806c2624..9f355b670e 100644
--- a/tests/PhpWord/Shared/HtmlTest.php
+++ b/tests/PhpWord/Shared/HtmlTest.php
@@ -634,14 +634,14 @@ public function testParseLetterSpacing()
}
/**
- * Parse widths in tables and cells, which also allows for controlling column width
- */
+ * Parse widths in tables and cells, which also allows for controlling column width
+ */
public function testParseTableAndCellWidth()
{
$phpWord = new \PhpOffice\PhpWord\PhpWord();
- $section = $phpWord->addSection([
+ $section = $phpWord->addSection(array(
'orientation' => \PhpOffice\PhpWord\Style\Section::ORIENTATION_LANDSCAPE,
- ]);
+ ));
// borders & backgrounds are here just for better visual comparison
$html = <<addSection([
+ $section = $phpWord->addSection(array(
'orientation' => \PhpOffice\PhpWord\Style\Section::ORIENTATION_LANDSCAPE,
- ]);
+ ));
// borders & backgrounds are here just for better visual comparison
$html = <<assertTrue($doc->elementExists($xpath));
$this->assertEquals('single', $doc->getElement($xpath)->getAttribute('w:val'));
- $this->assertEquals(intval(5 * 15 / 2), $doc->getElement($xpath)->getAttribute('w:sz'));
+ $this->assertEquals((int) (5 * 15 / 2), $doc->getElement($xpath)->getAttribute('w:sz'));
$this->assertEquals('lightblue', $doc->getElement($xpath)->getAttribute('w:color'));
$xpath = '/w:document/w:body/w:p[4]/w:pPr/w:spacing';
@@ -785,8 +785,8 @@ public function testParseHorizRule()
}
/**
- * Parse ordered list start & numbering style
- */
+ * Parse ordered list start & numbering style
+ */
public function testParseOrderedList()
{
$phpWord = new \PhpOffice\PhpWord\PhpWord();
@@ -846,8 +846,8 @@ public function testParseOrderedList()
}
/**
- * Parse ordered list start & numbering style
- */
+ * Parse ordered list start & numbering style
+ */
public function testParseVerticalAlign()
{
$phpWord = new \PhpOffice\PhpWord\PhpWord();
@@ -886,8 +886,8 @@ public function testParseVerticalAlign()
}
/**
- * Fix bug - don't decode double quotes inside double quoted string
- */
+ * Fix bug - don't decode double quotes inside double quoted string
+ */
public function testDontDecodeAlreadyEncodedDoubleQuotes()
{
$phpWord = new \PhpOffice\PhpWord\PhpWord();
@@ -900,6 +900,6 @@ public function testDontDecodeAlreadyEncodedDoubleQuotes()
Html::addHtml($section, $html);
$doc = TestHelperDOCX::getDocument($phpWord, 'Word2007');
- $this->assertTrue(is_object($doc));
+ $this->assertInternalType('object', $doc);
}
}
|