533 linhas
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			533 linhas
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace FML\Stylesheet;
 | |
| 
 | |
| /**
 | |
|  * Class representing a Stylesheet Mood
 | |
|  * Warning: The mood class isn't fully supported yet - Missing attributes: LDir1 etc.
 | |
|  *
 | |
|  * @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 Mood
 | |
| {
 | |
| 
 | |
|     /**
 | |
|      * @var string $lightAmbientColor Light ambient color
 | |
|      */
 | |
|     protected $lightAmbientColor = null;
 | |
| 
 | |
|     /**
 | |
|      * @var string $cloudsMinimumColor Clouds minimum color
 | |
|      */
 | |
|     protected $cloudsMinimumColor = null;
 | |
| 
 | |
|     /**
 | |
|      * @var string $cloudsMaximumColor Clouds maximum color
 | |
|      */
 | |
|     protected $cloudsMaximumColor = null;
 | |
| 
 | |
|     /**
 | |
|      * @var string $light0Color Color of light source 0
 | |
|      */
 | |
|     protected $light0Color = null;
 | |
| 
 | |
|     /**
 | |
|      * @var float $light0Intensity Intensity of light source 0
 | |
|      */
 | |
|     protected $light0Intensity = 1.;
 | |
| 
 | |
|     /**
 | |
|      * @var float $light0PhiAngle Phi angle of light source 0
 | |
|      */
 | |
|     protected $light0PhiAngle = 0.;
 | |
| 
 | |
|     /**
 | |
|      * @var float $light0ThetaAngle Theta angle of light source 0
 | |
|      */
 | |
|     protected $light0ThetaAngle = 0.;
 | |
| 
 | |
|     /**
 | |
|      * @var string $lightBallColor Light ball color
 | |
|      */
 | |
|     protected $lightBallColor = null;
 | |
| 
 | |
|     /**
 | |
|      * @var float $lightBallIntensity Light ball intensity
 | |
|      */
 | |
|     protected $lightBallIntensity = 1.;
 | |
| 
 | |
|     /**
 | |
|      * @var float $lightBallRadius Light ball radius
 | |
|      */
 | |
|     protected $lightBallRadius = 0.;
 | |
| 
 | |
|     /**
 | |
|      * @var string $fogColor Fog color
 | |
|      */
 | |
|     protected $fogColor = null;
 | |
| 
 | |
|     /**
 | |
|      * @var float $selfIlluminationColor Self illumination color
 | |
|      */
 | |
|     protected $selfIlluminationColor = null;
 | |
| 
 | |
|     /**
 | |
|      * @var float $skyGradientV_Scale Sky gradient scale
 | |
|      */
 | |
|     protected $skyGradientScale = 1.;
 | |
| 
 | |
|     /**
 | |
|      * @var SkyGradientKey[] $skyGradientKeys Sky Gradient Keys
 | |
|      */
 | |
|     protected $skyGradientKeys = array();
 | |
| 
 | |
|     /**
 | |
|      * Create a new Mood
 | |
|      *
 | |
|      * @api
 | |
|      * @return static
 | |
|      */
 | |
|     public static function create()
 | |
|     {
 | |
|         return new static();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the light ambient color
 | |
|      *
 | |
|      * @api
 | |
|      * @return string
 | |
|      */
 | |
|     public function getLightAmbientColor()
 | |
|     {
 | |
|         return $this->lightAmbientColor;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the ambient color in which elements reflect the light
 | |
|      *
 | |
|      * @api
 | |
|      * @param float $red   Red color value
 | |
|      * @param float $green Green color value
 | |
|      * @param float $blue  Blue color value
 | |
|      * @return static
 | |
|      */
 | |
|     public function setLightAmbientColor($red, $green, $blue)
 | |
|     {
 | |
|         $this->lightAmbientColor = floatval($red) . ' ' . floatval($green) . ' ' . floatval($blue);
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the minimum value for the background color range
 | |
|      *
 | |
|      * @api
 | |
|      * @return string
 | |
|      */
 | |
|     public function getCloudsMinimumColor()
 | |
|     {
 | |
|         return $this->cloudsMinimumColor;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the minimum value for the background color range
 | |
|      *
 | |
|      * @api
 | |
|      * @param float $red   Red color value
 | |
|      * @param float $green Green color value
 | |
|      * @param float $blue  Blue color value
 | |
|      * @return static
 | |
|      */
 | |
|     public function setCloudsMinimumColor($red, $green, $blue)
 | |
|     {
 | |
|         $this->cloudsMinimumColor = floatval($red) . ' ' . floatval($green) . ' ' . floatval($blue);
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the maximum value for the background color range
 | |
|      *
 | |
|      * @api
 | |
|      * @return string
 | |
|      */
 | |
|     public function getCloudsMaximumColor()
 | |
|     {
 | |
|         return $this->cloudsMaximumColor;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the maximum value for the background color range
 | |
|      *
 | |
|      * @api
 | |
|      * @param float $red   Red color value
 | |
|      * @param float $green Green color value
 | |
|      * @param float $blue  Blue color value
 | |
|      * @return static
 | |
|      */
 | |
|     public function setCloudsMaximumColor($red, $green, $blue)
 | |
|     {
 | |
|         $this->cloudsMaximumColor = floatval($red) . ' ' . floatval($green) . ' ' . floatval($blue);
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the RGB color of light source 0
 | |
|      *
 | |
|      * @api
 | |
|      * @return string
 | |
|      */
 | |
|     public function getLight0Color()
 | |
|     {
 | |
|         return $this->light0Color;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the RGB color of light source 0
 | |
|      *
 | |
|      * @api
 | |
|      * @param float $red   Red color value
 | |
|      * @param float $green Green color value
 | |
|      * @param float $blue  Blue color value
 | |
|      * @return static
 | |
|      */
 | |
|     public function setLight0Color($red, $green, $blue)
 | |
|     {
 | |
|         $this->light0Color = floatval($red) . ' ' . floatval($green) . ' ' . floatval($blue);
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the intensity of light source 0
 | |
|      *
 | |
|      * @api
 | |
|      * @return float
 | |
|      */
 | |
|     public function getLight0Intensity()
 | |
|     {
 | |
|         return $this->light0Intensity;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the intensity of light source 0
 | |
|      *
 | |
|      * @api
 | |
|      * @param float $intensity Light intensity
 | |
|      * @return static
 | |
|      */
 | |
|     public function setLight0Intensity($intensity)
 | |
|     {
 | |
|         $this->light0Intensity = (float)$intensity;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the phi angle of light source 0
 | |
|      *
 | |
|      * @api
 | |
|      * @return float
 | |
|      */
 | |
|     public function getLight0PhiAngle()
 | |
|     {
 | |
|         return $this->light0PhiAngle;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the phi angle of light source 0
 | |
|      *
 | |
|      * @api
 | |
|      * @param float $phiAngle Phi angle
 | |
|      * @return static
 | |
|      */
 | |
|     public function setLight0PhiAngle($phiAngle)
 | |
|     {
 | |
|         $this->light0PhiAngle = (float)$phiAngle;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the theta angle of light source 0
 | |
|      *
 | |
|      * @api
 | |
|      * @return float
 | |
|      */
 | |
|     public function getLight0ThetaAngle()
 | |
|     {
 | |
|         return $this->light0ThetaAngle;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the theta angle of light source 0
 | |
|      *
 | |
|      * @api
 | |
|      * @param float $thetaAngle Theta angle
 | |
|      * @return static
 | |
|      */
 | |
|     public function setLight0ThetaAngle($thetaAngle)
 | |
|     {
 | |
|         $this->light0ThetaAngle = (float)$thetaAngle;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the light ball color
 | |
|      *
 | |
|      * @api
 | |
|      * @return string
 | |
|      */
 | |
|     public function getLightBallColor()
 | |
|     {
 | |
|         return $this->lightBallColor;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the light ball color
 | |
|      *
 | |
|      * @api
 | |
|      * @param float $red   Red color value
 | |
|      * @param float $green Green color value
 | |
|      * @param float $blue  Blue color value
 | |
|      * @return static
 | |
|      */
 | |
|     public function setLightBallColor($red, $green, $blue)
 | |
|     {
 | |
|         $this->lightBallColor = floatval($red) . ' ' . floatval($green) . ' ' . floatval($blue);
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the light ball intensity
 | |
|      *
 | |
|      * @api
 | |
|      * @return float
 | |
|      */
 | |
|     public function getLightBallIntensity()
 | |
|     {
 | |
|         return $this->lightBallIntensity;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the light ball intensity
 | |
|      *
 | |
|      * @api
 | |
|      * @param float $intensity Light ball intensity
 | |
|      * @return static
 | |
|      */
 | |
|     public function setLightBallIntensity($intensity)
 | |
|     {
 | |
|         $this->lightBallIntensity = (float)$intensity;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the light ball radius
 | |
|      *
 | |
|      * @api
 | |
|      * @return float
 | |
|      */
 | |
|     public function getLightBallRadius()
 | |
|     {
 | |
|         return $this->lightBallRadius;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the light ball radius
 | |
|      *
 | |
|      * @api
 | |
|      * @param float $radius Light ball radius
 | |
|      * @return static
 | |
|      */
 | |
|     public function setLightBallRadius($radius)
 | |
|     {
 | |
|         $this->lightBallRadius = (float)$radius;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the fog color
 | |
|      *
 | |
|      * @api
 | |
|      * @return string
 | |
|      */
 | |
|     public function getFogColor()
 | |
|     {
 | |
|         return $this->fogColor;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the fog color
 | |
|      *
 | |
|      * @api
 | |
|      * @param float $red   Red color value
 | |
|      * @param float $green Green color value
 | |
|      * @param float $blue  Blue color value
 | |
|      * @return static
 | |
|      */
 | |
|     public function setFogColor($red, $green, $blue)
 | |
|     {
 | |
|         $this->fogColor = floatval($red) . ' ' . floatval($green) . ' ' . floatval($blue);
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the self illumination color
 | |
|      *
 | |
|      * @api
 | |
|      * @return string
 | |
|      */
 | |
|     public function getSelfIlluminationColor()
 | |
|     {
 | |
|         return $this->selfIlluminationColor;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the self illumination color
 | |
|      *
 | |
|      * @api
 | |
|      * @param float $red   Red color value
 | |
|      * @param float $green Green color value
 | |
|      * @param float $blue  Blue color value
 | |
|      * @return static
 | |
|      */
 | |
|     public function setSelfIlluminationColor($red, $green, $blue)
 | |
|     {
 | |
|         $this->selfIlluminationColor = floatval($red) . ' ' . floatval($green) . ' ' . floatval($blue);
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the sky gradient scale
 | |
|      *
 | |
|      * @api
 | |
|      * @return float
 | |
|      */
 | |
|     public function getSkyGradientScale()
 | |
|     {
 | |
|         return $this->skyGradientScale;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the sky gradient scale
 | |
|      *
 | |
|      * @api
 | |
|      * @param float $skyGradientScale Sky gradient scale
 | |
|      * @return static
 | |
|      */
 | |
|     public function setSkyGradientScale($skyGradientScale)
 | |
|     {
 | |
|         $this->skyGradientScale = (float)$skyGradientScale;
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get Sky Gradient Keys
 | |
|      *
 | |
|      * @api
 | |
|      * @return SkyGradientKey[]
 | |
|      */
 | |
|     public function getSkyGradientKeys()
 | |
|     {
 | |
|         return $this->skyGradientKeys;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Add a sky gradient key
 | |
|      *
 | |
|      * @api
 | |
|      * @param SkyGradientKey $skyGradientKey Sky Gradient Key
 | |
|      * @return static
 | |
|      */
 | |
|     public function addSkyGradientKey(SkyGradientKey $skyGradientKey)
 | |
|     {
 | |
|         array_push($this->skyGradientKeys, $skyGradientKey);
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Add a sky gradient
 | |
|      *
 | |
|      * @api
 | |
|      * @param float  $x     X value
 | |
|      * @param string $color Color value
 | |
|      * @return static
 | |
|      */
 | |
|     public function addSkyGradient($x, $color)
 | |
|     {
 | |
|         $skyGradientKey = new SkyGradientKey($x, $color);
 | |
|         return $this->addSkyGradientKey($skyGradientKey);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Remove all Sky Gradient Keys
 | |
|      *
 | |
|      * @api
 | |
|      * @return static
 | |
|      */
 | |
|     public function removeAllSkyGradientKeys()
 | |
|     {
 | |
|         $this->skyGradientKeys = array();
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Render the Mood
 | |
|      *
 | |
|      * @param \DOMDocument $domDocument DOMDocument for which the Mood should be rendered
 | |
|      * @return \DOMElement
 | |
|      */
 | |
|     public function render(\DOMDocument $domDocument)
 | |
|     {
 | |
|         $domElement = $domDocument->createElement("mood");
 | |
|         if ($this->lightAmbientColor) {
 | |
|             $domElement->setAttribute("LAmbient_LinearRgb", $this->lightAmbientColor);
 | |
|         }
 | |
|         if ($this->cloudsMinimumColor) {
 | |
|             $domElement->setAttribute("CloudsRgbMinLinear", $this->cloudsMinimumColor);
 | |
|         }
 | |
|         if ($this->cloudsMaximumColor) {
 | |
|             $domElement->setAttribute("CloudsRgbMaxLinear", $this->cloudsMaximumColor);
 | |
|         }
 | |
|         if ($this->light0Color) {
 | |
|             $domElement->setAttribute("LDir0_LinearRgb", $this->light0Color);
 | |
|         }
 | |
|         if ($this->light0Intensity != 1.) {
 | |
|             $domElement->setAttribute("LDir0_Intens", $this->light0Intensity);
 | |
|         }
 | |
|         if ($this->light0PhiAngle) {
 | |
|             $domElement->setAttribute("LDir0_DirPhi", $this->light0PhiAngle);
 | |
|         }
 | |
|         if ($this->light0ThetaAngle) {
 | |
|             $domElement->setAttribute("LDir0_DirTheta", $this->light0ThetaAngle);
 | |
|         }
 | |
|         if ($this->lightBallColor) {
 | |
|             $domElement->setAttribute("LBall_LinearRgb", $this->lightBallColor);
 | |
|         }
 | |
|         if ($this->lightBallIntensity != 1.) {
 | |
|             $domElement->setAttribute("LBall_Intens", $this->lightBallIntensity);
 | |
|         }
 | |
|         if ($this->lightBallRadius) {
 | |
|             $domElement->setAttribute("LBall_Radius", $this->lightBallRadius);
 | |
|         }
 | |
|         if ($this->fogColor) {
 | |
|             $domElement->setAttribute("FogColorSrgb", $this->fogColor);
 | |
|         }
 | |
|         if ($this->selfIlluminationColor) {
 | |
|             $domElement->setAttribute("SelfIllumColor", $this->selfIlluminationColor);
 | |
|         }
 | |
|         if ($this->skyGradientScale != 1.) {
 | |
|             $domElement->setAttribute("SkyGradientV_Scale", $this->skyGradientScale);
 | |
|         }
 | |
|         if ($this->skyGradientKeys) {
 | |
|             $skyGradientElement = $domDocument->createElement("skygradient");
 | |
|             $domElement->appendChild($skyGradientElement);
 | |
|             foreach ($this->skyGradientKeys as $skyGradientKey) {
 | |
|                 $skyGradientKeyElement = $skyGradientKey->render($domDocument);
 | |
|                 $skyGradientElement->appendChild($skyGradientKeyElement);
 | |
|             }
 | |
|         }
 | |
|         return $domElement;
 | |
|     }
 | |
| 
 | |
| }
 |