TrackManiaControl/libs/FML/Controls/Graph.php
2017-06-21 19:43:38 +02:00

114 lines
2.1 KiB
PHP

<?php
namespace FML\Controls;
use FML\Script\Features\GraphCurve;
use FML\Script\Features\GraphSettings;
use FML\Script\Features\ScriptFeature;
/**
* Graph Control
* (CMlGraph)
*
* @author steeffeen
* @copyright FancyManiaLinks Copyright © 2017 Steffen Schröder
* @license http://www.gnu.org/licenses/ GNU General Public License, Version 3
*/
class Graph extends Control
{
/**
* @var GraphSettings $graphSettings Graph settings
*/
protected $graphSettings = null;
/**
* @var GraphCurve[] $curves Curves
*/
protected $curves = array();
/**
* Get the graph settings
*
* @api
* @return GraphSettings
*/
public function getSettings()
{
if (!$this->graphSettings) {
$this->createSettings();
}
return $this->graphSettings;
}
/**
* Create new graph settings
*
* @return GraphSettings
*/
protected function createSettings()
{
$this->graphSettings = new GraphSettings($this);
$this->addScriptFeature($this->graphSettings);
return $this->graphSettings;
}
/**
* Get curves
*
* @api
* @return GraphCurve[]
*/
public function getCurves()
{
return $this->curves;
}
/**
* Add curve
*
* @api
* @param GraphCurve $curve Curve
* @return static
*/
public function addCurve(GraphCurve $curve)
{
$curve->setGraph($this);
$this->addScriptFeature($curve);
array_push($this->curves, $curve);
return $this;
}
/**
* Add curves
*
* @api
* @param GraphCurve[] $curves Curves
* @return static
*/
public function addCurves(array $curves)
{
foreach ($curves as $curve) {
$this->addCurve($curve);
}
return $this;
}
/**
* @see Control::getTagName()
*/
public function getTagName()
{
return "graph";
}
/**
* @see Control::getManiaScriptClass()
*/
public function getManiaScriptClass()
{
return "CMlGraph";
}
}