<?php namespace FML\Stylesheet; /** * Class representing a specific Style3d * * @author steeffeen */ class Style3d { /* * Constants */ const MODEL_Box = 'Box'; const MODEL_Button = 'Button'; const MODEL_ButtonH = 'ButtonH'; const MODEL_Title = 'Title'; const MODEL_Window = 'Window'; /* * Protected Properties */ protected $tagName = 'style3d'; protected $id = ''; protected $model = self::MODEL_Box; // TODO: check what happens for negative thickness values + adapt rendering protected $thickness = null; protected $color = ''; protected $focusColor = ''; protected $lightColor = ''; protected $focusLightColor = ''; // TODO: check offset value ranges + apapt rendering protected $yOffset = 0.; protected $focusYOffset = 0.; protected $zOffset = 0.; protected $focusZOffset = 0.; /** * Create a new Style3d Object * * @return \FML\Elements\Style3d */ public static function create() { $style3d = new Style3d(); return $style3d; } /** * Construct a new Style3d Object * * @param string $id (optional) Style Id */ public function __construct($id = null) { if ($id !== null) { $this->setId($id); } } /** * Set Style Id * * @param string $id Style Id * @return \FML\Stylesheet\Style3d */ public function setId($id) { $this->id = (string) $id; return $this; } /** * Check for Id and assign one if necessary * * @return \FML\Stylesheet\Style3d */ public function checkId() { if (!$this->id) { $this->id = uniqid(); } return $this; } /** * Get Style Id * * @return string */ public function getId() { return $this->id; } /** * Set Model * * @param string $model Style Model * @return \FML\Stylesheet\Style3d */ public function setModel($model) { $this->model = (string) $model; return $this; } /** * Set Thickness * * @param float $thickness Style Thickness * @return \FML\Stylesheet\Style3d */ public function setThickness($thickness) { $this->thickness = (float) $thickness; return $this; } /** * Set Color * * @param string $color Style Color * @return \FML\Stylesheet\Style3d */ public function setColor($color) { $this->color = (string) $color; return $this; } /** * Set Focus Color * * @param string $focusColor Style Focus Color * @return \FML\Stylesheet\Style3d */ public function setFocusColor($focusColor) { $this->focusColor = (string) $focusColor; return $this; } /** * Set Light Color * * @param string $lightColor Light Color * @return \FML\Stylesheet\Style3d */ public function setLightColor($lightColor) { $this->lightColor = (string) $lightColor; return $this; } /** * Set Focus Light Color * * @param string $focusLightColor Focus Light Color * @return \FML\Stylesheet\Style3d */ public function setFocusLightColor($focusLightColor) { $this->focusLightColor = (string) $focusLightColor; return $this; } /** * Set Y-Offset * * @param flaot $yOffset Y-Offset * @return \FML\Stylesheet\Style3d */ public function setYOffset($yOffset) { $this->yOffset = (float) $yOffset; return $this; } /** * Set Focus Y-Offset * * @param float $focusYOffset Focus Y-Offset * @return \FML\Stylesheet\Style3d */ public function setFocusYOffset($focusYOffset) { $this->focusYOffset = (float) $focusYOffset; return $this; } /** * Set Z-Offset * * @param float $zOffset Z-Offset * @return \FML\Stylesheet\Style3d */ public function setZOffset($zOffset) { $this->zOffset = (float) $zOffset; return $this; } /** * Set Focus Z-Offset * * @param float $focusZOffset Focus Z-Offset * @return \FML\Stylesheet\Style3d */ public function setFocusZOffset($focusZOffset) { $this->focusZOffset = (float) $focusZOffset; return $this; } /** * Render the Style3d XML Element * * @param \DOMDocument $domDocument DomDocument for which the Style3d XML Element should be rendered * @return \DOMElement */ public function render(\DOMDocument $domDocument) { $style3dXml = $domDocument->createElement($this->tagName); $this->checkId(); if ($this->id) { $style3dXml->setAttribute('id', $this->id); } if ($this->model) { $style3dXml->setAttribute('model', $this->model); } if ($this->thickness) { $style3dXml->setAttribute('thickness', $this->thickness); } if ($this->color) { $style3dXml->setAttribute('color', $this->color); } if ($this->focusColor) { $style3dXml->setAttribute('fcolor', $this->focusColor); } if ($this->lightColor) { $style3dXml->setAttribute('lightcolor', $this->lightColor); } if ($this->focusLightColor) { $style3dXml->setAttribute('flightcolor', $this->focusLightColor); } if ($this->yOffset) { $style3dXml->setAttribute('yoffset', $this->yOffset); } if ($this->focusYOffset) { $style3dXml->setAttribute('fyoffset', $this->focusYOffset); } if ($this->zOffset) { $style3dXml->setAttribute('zoffset', $this->zOffset); } if ($this->focusZOffset) { $style3dXml->setAttribute('fzoffset', $this->focusZOffset); } return $style3dXml; } }