308 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			308 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace FML\Controls;
 | |
| 
 | |
| use FML\Types\Colorable;
 | |
| use FML\Types\Styleable;
 | |
| 
 | |
| /**
 | |
|  * Gauge Control
 | |
|  * (CMlGauge)
 | |
|  *
 | |
|  * @author    steeffeen <mail@steeffeen.com>
 | |
|  * @copyright FancyManiaLinks Copyright © 2017 Steffen Schröder
 | |
|  * @license   http://www.gnu.org/licenses/ GNU General Public License, Version 3
 | |
|  */
 | |
| class Gauge extends Control implements Colorable, Styleable
 | |
| {
 | |
| 
 | |
|     /*
 | |
|      * Constants
 | |
|      */
 | |
|     const STYLE_BgCard           = "BgCard";
 | |
|     const STYLE_EnergyBar        = "EnergyBar";
 | |
|     const STYLE_ProgressBar      = "ProgressBar";
 | |
|     const STYLE_ProgressBarSmall = "ProgressBarSmall";
 | |
| 
 | |
|     /**
 | |
|      * @var float $ratio Ratio
 | |
|      */
 | |
|     protected $ratio = 0.0;
 | |
| 
 | |
|     /**
 | |
|      * @var float $grading Grading
 | |
|      */
 | |
|     protected $grading = 1.;
 | |
| 
 | |
|     /**
 | |
|      * @var string $color Color
 | |
|      */
 | |
|     protected $color = null;
 | |
| 
 | |
|     /**
 | |
|      * @var bool $centered Centered
 | |
|      */
 | |
|     protected $centered = null;
 | |
| 
 | |
|     /**
 | |
|      * @var int $clan Clan number
 | |
|      */
 | |
|     protected $clan = null;
 | |
| 
 | |
|     /**
 | |
|      * @var bool $drawBackground Draw background
 | |
|      */
 | |
|     protected $drawBackground = true;
 | |
| 
 | |
|     /**
 | |
|      * @var bool $drawBlockBackground Draw block background
 | |
|      */
 | |
|     protected $drawBlockBackground = true;
 | |
| 
 | |
|     /**
 | |
|      * @var string $style Style
 | |
|      */
 | |
|     protected $style = null;
 | |
| 
 | |
|     /**
 | |
|      * Get the ratio
 | |
|      *
 | |
|      * @api
 | |
|      * @return float
 | |
|      */
 | |
|     public function getRatio()
 | |
|     {
 | |
|         return $this->ratio;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the ratio
 | |
|      *
 | |
|      * @api
 | |
|      * @param float $ratio Ratio value
 | |
|      * @return static
 | |
|      */
 | |
|     public function setRatio($ratio)
 | |
|     {
 | |
|         $this->ratio = (float)$ratio;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the grading
 | |
|      *
 | |
|      * @api
 | |
|      * @return float
 | |
|      */
 | |
|     public function getGrading()
 | |
|     {
 | |
|         return $this->grading;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the grading
 | |
|      *
 | |
|      * @api
 | |
|      * @param float $grading Grading value
 | |
|      * @return static
 | |
|      */
 | |
|     public function setGrading($grading)
 | |
|     {
 | |
|         $this->grading = (float)$grading;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @see Colorable::getColor
 | |
|      */
 | |
|     public function getColor()
 | |
|     {
 | |
|         return $this->color;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @see Colorable::setColor
 | |
|      */
 | |
|     public function setColor($color)
 | |
|     {
 | |
|         $this->color = (string)$color;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get centered
 | |
|      *
 | |
|      * @api
 | |
|      * @return bool
 | |
|      */
 | |
|     public function getCentered()
 | |
|     {
 | |
|         return $this->centered;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set centered
 | |
|      *
 | |
|      * @api
 | |
|      * @param bool $centered If the Gauge should be centered
 | |
|      * @return static
 | |
|      */
 | |
|     public function setCentered($centered)
 | |
|     {
 | |
|         $this->centered = (bool)$centered;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the clan
 | |
|      *
 | |
|      * @api
 | |
|      * @return int
 | |
|      */
 | |
|     public function getClan()
 | |
|     {
 | |
|         return $this->clan;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the clan
 | |
|      *
 | |
|      * @api
 | |
|      * @param int $clan Clan number
 | |
|      * @return static
 | |
|      */
 | |
|     public function setClan($clan)
 | |
|     {
 | |
|         $this->clan = (int)$clan;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get draw background
 | |
|      *
 | |
|      * @api
 | |
|      * @return bool
 | |
|      */
 | |
|     public function getDrawBackground()
 | |
|     {
 | |
|         return $this->drawBackground;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set draw background
 | |
|      *
 | |
|      * @api
 | |
|      * @param bool $drawBackground If the Gauges background should be drawn
 | |
|      * @return static
 | |
|      * @deprecated use setDrawBackground() instead
 | |
|      */
 | |
|     public function setDrawBg($drawBackground)
 | |
|     {
 | |
|         return $this->setDrawBackground($drawBackground);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set draw background
 | |
|      *
 | |
|      * @api
 | |
|      * @param bool $drawBackground If the Gauges background should be drawn
 | |
|      * @return static
 | |
|      */
 | |
|     public function setDrawBackground($drawBackground)
 | |
|     {
 | |
|         $this->drawBackground = (bool)$drawBackground;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get draw block background
 | |
|      *
 | |
|      * @api
 | |
|      * @return bool
 | |
|      */
 | |
|     public function getDrawBlockBackground()
 | |
|     {
 | |
|         return $this->drawBlockBackground;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set draw block background
 | |
|      *
 | |
|      * @api
 | |
|      * @param bool $drawBlockBackground If the Gauges block background should be drawn
 | |
|      * @return static
 | |
|      */
 | |
|     public function setDrawBlockBackground($drawBlockBackground)
 | |
|     {
 | |
|         $this->drawBlockBackground = (bool)$drawBlockBackground;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @see Styleable::getStyle()
 | |
|      */
 | |
|     public function getStyle()
 | |
|     {
 | |
|         return $this->style;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @see Styleable::setStyle()
 | |
|      */
 | |
|     public function setStyle($style)
 | |
|     {
 | |
|         $this->style = (string)$style;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @see Control::getTagName()
 | |
|      */
 | |
|     public function getTagName()
 | |
|     {
 | |
|         return "gauge";
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @see Control::getManiaScriptClass()
 | |
|      */
 | |
|     public function getManiaScriptClass()
 | |
|     {
 | |
|         return "CMlGauge";
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @see Control::render()
 | |
|      */
 | |
|     public function render(\DOMDocument $domDocument)
 | |
|     {
 | |
|         $domElement = parent::render($domDocument);
 | |
|         if ($this->ratio) {
 | |
|             $domElement->setAttribute("ratio", $this->ratio);
 | |
|         }
 | |
|         if ($this->grading != 1.) {
 | |
|             $domElement->setAttribute("grading", $this->grading);
 | |
|         }
 | |
|         if ($this->color) {
 | |
|             $domElement->setAttribute("color", $this->color);
 | |
|         }
 | |
|         if ($this->centered) {
 | |
|             $domElement->setAttribute("centered", 1);
 | |
|         }
 | |
|         if ($this->clan) {
 | |
|             $domElement->setAttribute("clan", $this->clan);
 | |
|         }
 | |
|         if (!$this->drawBackground) {
 | |
|             $domElement->setAttribute("drawbg", 0);
 | |
|         }
 | |
|         if (!$this->drawBlockBackground) {
 | |
|             $domElement->setAttribute("drawblockbg", 0);
 | |
|         }
 | |
|         if ($this->style) {
 | |
|             $domElement->setAttribute("style", $this->style);
 | |
|         }
 | |
|         return $domElement;
 | |
|     }
 | |
| 
 | |
| }
 |