538 lines
11 KiB
PHP
538 lines
11 KiB
PHP
<?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\Style;
|
|
|
|
/**
|
|
* Chart style
|
|
*
|
|
* @since 0.12.0
|
|
*/
|
|
class Chart extends AbstractStyle
|
|
{
|
|
/**
|
|
* Width (in EMU)
|
|
*
|
|
* @var int
|
|
*/
|
|
private $width = 1000000;
|
|
|
|
/**
|
|
* Height (in EMU)
|
|
*
|
|
* @var int
|
|
*/
|
|
private $height = 1000000;
|
|
|
|
/**
|
|
* Is 3D; applies to pie, bar, line, area
|
|
*
|
|
* @var bool
|
|
*/
|
|
private $is3d = false;
|
|
|
|
/**
|
|
* A list of colors to use in the chart
|
|
*
|
|
* @var array
|
|
*/
|
|
private $colors = array();
|
|
|
|
/**
|
|
* Chart title
|
|
*
|
|
* @var string
|
|
*/
|
|
private $title = null;
|
|
|
|
/**
|
|
* Chart legend visibility
|
|
*
|
|
* @var bool
|
|
*/
|
|
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
|
|
*
|
|
* @var array
|
|
*/
|
|
private $dataLabelOptions = array(
|
|
'showVal' => true, // value
|
|
'showCatName' => true, // category name
|
|
'showLegendKey' => false, //show the cart legend
|
|
'showSerName' => false, // series name
|
|
'showPercent' => false,
|
|
'showLeaderLines' => false,
|
|
'showBubbleSize' => false,
|
|
);
|
|
|
|
/**
|
|
* A string that tells the writer where to write chart labels or to skip
|
|
* "nextTo" - sets labels next to the axis (bar graphs on the left) (default)
|
|
* "low" - labels on the left side of the graph
|
|
* "high" - labels on the right side of the graph
|
|
*
|
|
* @var string
|
|
*/
|
|
private $categoryLabelPosition = 'nextTo';
|
|
|
|
/**
|
|
* A string that tells the writer where to write chart labels or to skip
|
|
* "nextTo" - sets labels next to the axis (bar graphs on the bottom) (default)
|
|
* "low" - labels are below the graph
|
|
* "high" - labels above the graph
|
|
*
|
|
* @var string
|
|
*/
|
|
private $valueLabelPosition = 'nextTo';
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $categoryAxisTitle;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $valueAxisTitle;
|
|
|
|
/**
|
|
* The position for major tick marks
|
|
* Possible values are 'in', 'out', 'cross', 'none'
|
|
*
|
|
* @var string
|
|
*/
|
|
private $majorTickMarkPos = 'none';
|
|
|
|
/**
|
|
* Show labels for axis
|
|
*
|
|
* @var bool
|
|
*/
|
|
private $showAxisLabels = false;
|
|
|
|
/**
|
|
* Show Gridlines for Y-Axis
|
|
*
|
|
* @var bool
|
|
*/
|
|
private $gridY = false;
|
|
|
|
/**
|
|
* Show Gridlines for X-Axis
|
|
*
|
|
* @var bool
|
|
*/
|
|
private $gridX = false;
|
|
|
|
/**
|
|
* Create a new instance
|
|
*
|
|
* @param array $style
|
|
*/
|
|
public function __construct($style = array())
|
|
{
|
|
$this->setStyleByArray($style);
|
|
}
|
|
|
|
/**
|
|
* Get width
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getWidth()
|
|
{
|
|
return $this->width;
|
|
}
|
|
|
|
/**
|
|
* Set width
|
|
*
|
|
* @param int $value
|
|
* @return self
|
|
*/
|
|
public function setWidth($value = null)
|
|
{
|
|
$this->width = $this->setIntVal($value, $this->width);
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get height
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getHeight()
|
|
{
|
|
return $this->height;
|
|
}
|
|
|
|
/**
|
|
* Set height
|
|
*
|
|
* @param int $value
|
|
* @return self
|
|
*/
|
|
public function setHeight($value = null)
|
|
{
|
|
$this->height = $this->setIntVal($value, $this->height);
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Is 3D
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function is3d()
|
|
{
|
|
return $this->is3d;
|
|
}
|
|
|
|
/**
|
|
* Set 3D
|
|
*
|
|
* @param bool $value
|
|
* @return self
|
|
*/
|
|
public function set3d($value = true)
|
|
{
|
|
$this->is3d = $this->setBoolVal($value, $this->is3d);
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get the list of colors to use in a chart.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function getColors()
|
|
{
|
|
return $this->colors;
|
|
}
|
|
|
|
/**
|
|
* 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())
|
|
{
|
|
$this->colors = $value;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get the chart title
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getTitle()
|
|
{
|
|
return $this->title;
|
|
}
|
|
|
|
/**
|
|
* Set the chart title
|
|
*
|
|
* @param string $value
|
|
* @return self
|
|
*/
|
|
public function setTitle($value = null)
|
|
{
|
|
$this->title = $value;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get chart legend visibility
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function isShowLegend()
|
|
{
|
|
return $this->showLegend;
|
|
}
|
|
|
|
/**
|
|
* Set chart legend visibility
|
|
*
|
|
* @param bool $value
|
|
* @return self
|
|
*/
|
|
public function setShowLegend($value = false)
|
|
{
|
|
$this->showLegend = $value;
|
|
|
|
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
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function showAxisLabels()
|
|
{
|
|
return $this->showAxisLabels;
|
|
}
|
|
|
|
/**
|
|
* Set show Gridlines for Y-Axis
|
|
*
|
|
* @param bool $value
|
|
* @return self
|
|
*/
|
|
public function setShowAxisLabels($value = true)
|
|
{
|
|
$this->showAxisLabels = $this->setBoolVal($value, $this->showAxisLabels);
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* get the list of options for data labels
|
|
*
|
|
* @return array
|
|
*/
|
|
public function getDataLabelOptions()
|
|
{
|
|
return $this->dataLabelOptions;
|
|
}
|
|
|
|
/**
|
|
* Set values for data label options.
|
|
* This will only change values for options defined in $this->dataLabelOptions, and cannot create new ones.
|
|
*
|
|
* @param array $values [description]
|
|
*/
|
|
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]
|
|
);
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Show Gridlines for Y-Axis
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function showGridY()
|
|
{
|
|
return $this->gridY;
|
|
}
|
|
|
|
/**
|
|
* Set show Gridlines for Y-Axis
|
|
*
|
|
* @param bool $value
|
|
* @return self
|
|
*/
|
|
public function setShowGridY($value = true)
|
|
{
|
|
$this->gridY = $this->setBoolVal($value, $this->gridY);
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get the categoryLabelPosition setting
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getCategoryLabelPosition()
|
|
{
|
|
return $this->categoryLabelPosition;
|
|
}
|
|
|
|
/**
|
|
* Set the categoryLabelPosition setting
|
|
* "none" - skips writing labels
|
|
* "nextTo" - sets labels next to the (bar graphs on the left)
|
|
* "low" - labels on the left side of the graph
|
|
* "high" - labels on the right side of the graph
|
|
*
|
|
* @param mixed $labelPosition
|
|
* @return self
|
|
*/
|
|
public function setCategoryLabelPosition($labelPosition)
|
|
{
|
|
$enum = array('nextTo', 'low', 'high');
|
|
$this->categoryLabelPosition = $this->setEnumVal($labelPosition, $enum, $this->categoryLabelPosition);
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get the valueAxisLabelPosition setting
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getValueLabelPosition()
|
|
{
|
|
return $this->valueLabelPosition;
|
|
}
|
|
|
|
/**
|
|
* Set the valueLabelPosition setting
|
|
* "none" - skips writing labels
|
|
* "nextTo" - sets labels next to the value
|
|
* "low" - sets labels are below the graph
|
|
* "high" - sets labels above the graph
|
|
*
|
|
* @param string
|
|
* @param mixed $labelPosition
|
|
*/
|
|
public function setValueLabelPosition($labelPosition)
|
|
{
|
|
$enum = array('nextTo', 'low', 'high');
|
|
$this->valueLabelPosition = $this->setEnumVal($labelPosition, $enum, $this->valueLabelPosition);
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get the categoryAxisTitle
|
|
* @return string
|
|
*/
|
|
public function getCategoryAxisTitle()
|
|
{
|
|
return $this->categoryAxisTitle;
|
|
}
|
|
|
|
/**
|
|
* Set the title that appears on the category side of the chart
|
|
* @param string $axisTitle
|
|
*/
|
|
public function setCategoryAxisTitle($axisTitle)
|
|
{
|
|
$this->categoryAxisTitle = $axisTitle;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get the valueAxisTitle
|
|
* @return string
|
|
*/
|
|
public function getValueAxisTitle()
|
|
{
|
|
return $this->valueAxisTitle;
|
|
}
|
|
|
|
/**
|
|
* Set the title that appears on the value side of the chart
|
|
* @param string $axisTitle
|
|
*/
|
|
public function setValueAxisTitle($axisTitle)
|
|
{
|
|
$this->valueAxisTitle = $axisTitle;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getMajorTickPosition()
|
|
{
|
|
return $this->majorTickMarkPos;
|
|
}
|
|
|
|
/**
|
|
* Set the position for major tick marks
|
|
* @param string $position
|
|
*/
|
|
public function setMajorTickPosition($position)
|
|
{
|
|
$enum = array('in', 'out', 'cross', 'none');
|
|
$this->majorTickMarkPos = $this->setEnumVal($position, $enum, $this->majorTickMarkPos);
|
|
}
|
|
|
|
/**
|
|
* Show Gridlines for X-Axis
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function showGridX()
|
|
{
|
|
return $this->gridX;
|
|
}
|
|
|
|
/**
|
|
* Set show Gridlines for X-Axis
|
|
*
|
|
* @param bool $value
|
|
* @return self
|
|
*/
|
|
public function setShowGridX($value = true)
|
|
{
|
|
$this->gridX = $this->setBoolVal($value, $this->gridX);
|
|
|
|
return $this;
|
|
}
|
|
}
|