<?php
namespace PhpOffice\PhpSpreadsheet\Chart;
class Legend
{
/** Legend positions */
const XL_LEGEND_POSITION_BOTTOM = -4107; // Below the chart.
const XL_LEGEND_POSITION_CORNER = 2; // In the upper right-hand corner of the chart border.
const XL_LEGEND_POSITION_CUSTOM = -4161; // A custom position.
const XL_LEGEND_POSITION_LEFT = -4131; // Left of the chart.
const XL_LEGEND_POSITION_RIGHT = -4152; // Right of the chart.
const XL_LEGEND_POSITION_TOP = -4160; // Above the chart.
const POSITION_RIGHT = 'r';
const POSITION_LEFT = 'l';
const POSITION_BOTTOM = 'b';
const POSITION_TOP = 't';
const POSITION_TOPRIGHT = 'tr';
< private static $positionXLref = [
> const POSITION_XLREF = [
self::XL_LEGEND_POSITION_BOTTOM => self::POSITION_BOTTOM,
self::XL_LEGEND_POSITION_CORNER => self::POSITION_TOPRIGHT,
self::XL_LEGEND_POSITION_CUSTOM => '??',
self::XL_LEGEND_POSITION_LEFT => self::POSITION_LEFT,
self::XL_LEGEND_POSITION_RIGHT => self::POSITION_RIGHT,
self::XL_LEGEND_POSITION_TOP => self::POSITION_TOP,
];
/**
* Legend position.
*
* @var string
*/
private $position = self::POSITION_RIGHT;
/**
* Allow overlay of other elements?
*
* @var bool
*/
private $overlay = true;
/**
* Legend Layout.
*
< * @var Layout
> * @var ?Layout
*/
private $layout;
> /** @var GridLines */
/**
> private $borderLines;
* Create a new Legend.
>
*
> /** @var ChartColor */
* @param string $position
> private $fillColor;
* @param null|Layout $layout
>
* @param bool $overlay
> /** @var ?AxisText */
*/
> private $legendText;
public function __construct($position = self::POSITION_RIGHT, Layout $layout = null, $overlay = false)
>
< * @param null|Layout $layout
> * @param ?Layout $layout
< public function __construct($position = self::POSITION_RIGHT, Layout $layout = null, $overlay = false)
> public function __construct($position = self::POSITION_RIGHT, ?Layout $layout = null, $overlay = false)
$this->layout = $layout;
$this->setOverlay($overlay);
> $this->borderLines = new GridLines();
}
> $this->fillColor = new ChartColor();
> }
/**
>
* Get legend position as an excel string value.
> public function getFillColor(): ChartColor
*
> {
* @return string
> return $this->fillColor;
*/
public function getPosition()
{
return $this->position;
}
/**
* Get legend position using an excel string value.
*
* @param string $position see self::POSITION_*
*
* @return bool
*/
public function setPosition($position)
{
< if (!in_array($position, self::$positionXLref)) {
> if (!in_array($position, self::POSITION_XLREF)) {
return false;
}
$this->position = $position;
return true;
}
/**
* Get legend position as an Excel internal numeric value.
*
< * @return int
> * @return false|int
*/
public function getPositionXL()
{
< return array_search($this->position, self::$positionXLref);
> // Scrutinizer thinks the following could return string. It is wrong.
> return array_search($this->position, self::POSITION_XLREF);
}
/**
* Set legend position using an Excel internal numeric value.
*
* @param int $positionXL see self::XL_LEGEND_POSITION_*
*
* @return bool
*/
public function setPositionXL($positionXL)
{
< if (!isset(self::$positionXLref[$positionXL])) {
> if (!isset(self::POSITION_XLREF[$positionXL])) {
return false;
}
< $this->position = self::$positionXLref[$positionXL];
> $this->position = self::POSITION_XLREF[$positionXL];
return true;
}
/**
* Get allow overlay of other elements?
*
* @return bool
*/
public function getOverlay()
{
return $this->overlay;
}
/**
* Set allow overlay of other elements?
*
* @param bool $overlay
< *
< * @return bool
*/
< public function setOverlay($overlay)
> public function setOverlay($overlay): void
{
< if (!is_bool($overlay)) {
< return false;
< }
<
$this->overlay = $overlay;
<
< return true;
}
/**
* Get Layout.
*
< * @return Layout
> * @return ?Layout
*/
public function getLayout()
{
return $this->layout;
> }
}
>
}
> public function getLegendText(): ?AxisText
> {
> return $this->legendText;
> }
>
> public function setLegendText(?AxisText $legendText): self
> {
> $this->legendText = $legendText;
>
> return $this;
> }
>
> public function getBorderLines(): GridLines
> {
> return $this->borderLines;
> }
>
> public function setBorderLines(GridLines $borderLines): self
> {
> $this->borderLines = $borderLines;
>
> return $this;