* @copyright FancyManiaLinks Copyright © 2014 Steffen Schröder * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 */ class Gauge extends Control implements Styleable { /* * Constants */ const STYLE_BgCard = 'BgCard'; const STYLE_EnergyBar = 'EnergyBar'; const STYLE_ProgressBar = 'ProgressBar'; const STYLE_ProgressBarSmall = 'ProgressBarSmall'; /* * Protected Properties */ protected $ratio = 0.; protected $grading = 1.; protected $color = ''; protected $rotation = 0.; protected $centered = 0; protected $clan = 0; protected $drawBg = 1; protected $drawBlockBg = 1; protected $style = ''; /** * Construct a new Gauge Control * * @param string $id (optional) Control Id */ public function __construct($id = null) { parent::__construct($id); $this->tagName = 'gauge'; } /** * Create a new Gauge Control * * @param string $id (optional) Control Id * @return \FML\Controls\Gauge */ public static function create($id = null) { $gauge = new Gauge($id); return $gauge; } /** * @see \FML\Controls\Control::getManiaScriptClass() */ public function getManiaScriptClass() { return 'CMlGauge'; } /** * Set Ratio * * @param float $ratio Ratio Value * @return \FML\Controls\Gauge */ public function setRatio($ratio) { $this->ratio = (float)$ratio; return $this; } /** * Set Grading * * @param float $grading Grading Value * @return \FML\Controls\Gauge */ public function setGrading($grading) { $this->grading = (float)$grading; return $this; } /** * Set Color * * @param string $color Gauge Color * @return \FML\Controls\Gauge */ public function setColor($color) { $this->color = (string)$color; return $this; } /** * Set Rotation * * @param float $rotation Gauge Rotation * @return \FML\Controls\Gauge */ public function setRotation($rotation) { $this->rotation = (float)$rotation; return $this; } /** * Set Centered * * @param bool $centered Whether Gauge is centered * @return \FML\Controls\Gauge */ public function setCentered($centered) { $this->centered = ($centered ? 1 : 0); return $this; } /** * Set Clan * * @param int $clan Clan number * @return \FML\Controls\Gauge */ public function setClan($clan) { $this->clan = (int)$clan; return $this; } /** * Set Draw Background * * @param bool $drawBg Whether Gauge Background should be drawn * @return \FML\Controls\Gauge */ public function setDrawBg($drawBg) { $this->drawBg = ($drawBg ? 1 : 0); return $this; } /** * Set Draw Block Background * * @param bool $drawBlockBg Whether Gauge Block Background should be drawn * @return \FML\Controls\Gauge */ public function setDrawBlockBg($drawBlockBg) { $this->drawBlockBg = ($drawBlockBg ? 1 : 0); return $this; } /** * @see \FML\Types\Styleable::setStyle() */ public function setStyle($style) { $this->style = (string)$style; return $this; } /** * @see \FML\Control::render() */ public function render(\DOMDocument $domDocument) { $xmlElement = parent::render($domDocument); if ($this->ratio) { $xmlElement->setAttribute('ratio', $this->ratio); } if ($this->grading != 1.) { $xmlElement->setAttribute('grading', $this->grading); } if ($this->color) { $xmlElement->setAttribute('color', $this->color); } if ($this->rotation) { $xmlElement->setAttribute('rotation', $this->rotation); } if ($this->centered) { $xmlElement->setAttribute('centered', $this->centered); } if ($this->clan) { $xmlElement->setAttribute('clan', $this->clan); } if (!$this->drawBg) { $xmlElement->setAttribute('drawbg', $this->drawBg); } if (!$this->drawBlockBg) { $xmlElement->setAttribute('drawblockbg', $this->drawBlockBg); } if ($this->style) { $xmlElement->setAttribute('style', $this->style); } return $xmlElement; } }