* @copyright FancyManiaLinks Copyright © 2017 Steffen Schröder * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 */ class Quad extends Control implements Actionable, BackgroundColorable, BgColorable, Imageable, Linkable, Scriptable, Styleable, SubStyleable { /* * Constants */ const KEEP_RATIO_INACTIVE = "inactive"; const KEEP_RATIO_CLIP = "Clip"; const KEEP_RATIO_FIT = "Fit"; /** * @var string $imageUrl Image url */ protected $imageUrl = null; /** * @var string $imageId Image ID */ protected $imageId = null; /** * @var string $imageFocusUrl Focus image url */ protected $imageFocusUrl = null; /** * @var string $imageFocusId Focus image ID */ protected $imageFocusId = null; /** * @var string $colorize Colorize value */ protected $colorize = null; /** * @var string $modulizeColor Modulization color */ protected $modulizeColor = null; /** * @var bool $autoScale Automatic scaling */ protected $autoScale = true; /** * @var float $autoScaleFixedWidth Fixed width for automatic scaling */ protected $autoScaleFixedWidth = -1.; /** * @var string $keepRatio Keep ratio mode */ protected $keepRatio = null; /** * @var float $opacity Opacity */ protected $opacity = 1.; /** * @var string $backgroundColor Background color */ protected $backgroundColor = null; /** * @var string $focusBackgroundColor Focus background color */ protected $focusBackgroundColor = null; /** * @var string $action Action name */ protected $action = null; /** * @var int $actionKey Action key */ protected $actionKey = null; /** * @var string $url Link url */ protected $url = null; /** * @var string $urlId Link url ID */ protected $urlId = null; /** * @var string $manialink Manialink */ protected $manialink = null; /** * @var string $manialinkId Manialink ID */ protected $manialinkId = null; /** * @var bool $scriptEvents Script events usage */ protected $scriptEvents = null; /** * @var string $scriptAction Script action */ protected $scriptAction = null; /** * @var string[] $scriptActionParameters Script action parameters */ protected $scriptActionParameters = null; /** * @var string $style Style */ protected $style = null; /** * @var string $subStyle SubStyle */ protected $subStyle = null; /** * @var bool $styleSelected Style selected */ protected $styleSelected = null; /** * @see Imageable::getImageUrl() */ public function getImageUrl() { return $this->imageUrl; } /** * @deprecated Use setImageUrl() * @see Quad::setImageUrl() */ public function setImage($imageUrl) { return $this->setImageUrl($imageUrl); } /** * @see Imageable::setImageUrl() */ public function setImageUrl($imageUrl) { $this->imageUrl = (string)$imageUrl; return $this; } /** * Get the image id to use from Dico * * @api * @return string */ public function getImageId() { return $this->imageId; } /** * Set the image id to use from Dico * * @api * @param string $imageId Image id * @return static */ public function setImageId($imageId) { $this->imageId = (string)$imageId; return $this; } /** * Get the focus image url * * @api * @return string */ public function getImageFocusUrl() { return $this->imageFocusUrl; } /** * Set the focus image url * * @api * @param string $imageFocusUrl Focus image url * @return static * @deprecated Use setImageFocusUrl() * @see Quad::setImageFocusUrl() */ public function setImageFocus($imageFocusUrl) { return $this->setImageFocusUrl($imageFocusUrl); } /** * Set the focus image url * * @api * @param string $imageFocusUrl Focus image url * @return static */ public function setImageFocusUrl($imageFocusUrl) { $this->imageFocusUrl = (string)$imageFocusUrl; return $this; } /** * Get the focus image id to use from Dico * * @api * @return string */ public function getImageFocusId() { return $this->imageFocusId; } /** * Set the focus image id to use from Dico * * @api * @param string $imageFocusId Focus image id * @return static */ public function setImageFocusId($imageFocusId) { $this->imageFocusId = (string)$imageFocusId; return $this; } /** * Get the colorization * * @api * @return string */ public function getColorize() { return $this->colorize; } /** * Set the colorization * * @api * @param string $colorize Colorize value * @return static */ public function setColorize($colorize) { $this->colorize = (string)$colorize; return $this; } /** * Get the modulization color * * @api * @return string */ public function getModulizeColor() { return $this->modulizeColor; } /** * Set the modulization color * * @api * @param string $modulizeColor Modulization color * @return static */ public function setModulizeColor($modulizeColor) { $this->modulizeColor = (string)$modulizeColor; return $this; } /** * Get the automatic image scaling * * @api * @return bool */ public function getAutoScale() { return $this->autoScale; } /** * Set the automatic image scaling * * @api * @param bool $autoScale If the image should scale automatically * @return static */ public function setAutoScale($autoScale) { $this->autoScale = (bool)$autoScale; return $this; } /** * Get the fixed width for automatic image scaling * * @api * @return float */ public function getAutoScaleFixedWidth() { return $this->autoScaleFixedWidth; } /** * Set the fixed width for automatic image scaling * * @api * @param float $autoScaleFixedWidth Fixed width for automatic image scaling * @return static */ public function setAutoScaleFixedWidth($autoScaleFixedWidth) { $this->autoScaleFixedWidth = (float)$autoScaleFixedWidth; return $this; } /** * Get the Keep Ratio mode * * @api * @return string */ public function getKeepRatio() { return $this->keepRatio; } /** * Set the Keep Ratio mode * * @api * @param string $keepRatio Keep Ratio mode * @return static */ public function setKeepRatio($keepRatio) { $this->keepRatio = (string)$keepRatio; return $this; } /** * Get the opacity * * @api * @return float */ public function getOpacity() { return $this->opacity; } /** * Set the opacity * * @api * @param float $opacity Opacity value * @return static */ public function setOpacity($opacity) { $this->opacity = (float)$opacity; return $this; } /** * @see BackgroundColorable::getBackgroundColor() */ public function getBackgroundColor() { return $this->backgroundColor; } /** * @see BackgroundColorable::setBackgroundColor() */ public function setBackgroundColor($backgroundColor) { $this->backgroundColor = (string)$backgroundColor; return $this; } /** * @deprecated Use setBackgroundColor() * @see Quad::setBackgroundColor() */ public function setBgColor($bgColor) { return $this->setBackgroundColor($bgColor); } /** * @see BackgroundColorable::getFocusBackgroundColor() */ public function getFocusBackgroundColor() { return $this->focusBackgroundColor; } /** * @see BackgroundColorable::setFocusBackgroundColor() */ public function setFocusBackgroundColor($focusBackgroundColor) { $this->focusBackgroundColor = (string)$focusBackgroundColor; return $this; } /** * @see Actionable::getAction() */ public function getAction() { return $this->action; } /** * @see Actionable::setAction() */ public function setAction($action) { $this->action = (string)$action; return $this; } /** * @see Actionable::getActionKey() */ public function getActionKey() { return $this->actionKey; } /** * @see Actionable::setActionKey() */ public function setActionKey($actionKey) { $this->actionKey = (int)$actionKey; return $this; } /** * @see Linkable::getUrl() */ public function getUrl() { return $this->url; } /** * @see Linkable::setUrl() */ public function setUrl($url) { $this->url = (string)$url; return $this; } /** * @see Linkable::getUrlId() */ public function getUrlId() { return $this->urlId; } /** * @see Linkable::setUrlId() */ public function setUrlId($urlId) { $this->urlId = (string)$urlId; return $this; } /** * @see Linkable::getManialink() */ public function getManialink() { return $this->manialink; } /** * @see Linkable::setManialink() */ public function setManialink($manialink) { $this->manialink = (string)$manialink; return $this; } /** * @see Linkable::getManialinkId() */ public function getManialinkId() { return $this->manialinkId; } /** * @see Linkable::setManialinkId() */ public function setManialinkId($manialinkId) { $this->manialinkId = (string)$manialinkId; return $this; } /** * @see Scriptable::getScriptEvents() */ public function getScriptEvents() { return $this->scriptEvents; } /** * @see Scriptable::setScriptEvents() */ public function setScriptEvents($scriptEvents) { $this->scriptEvents = (bool)$scriptEvents; return $this; } /** * @see Scriptable::getScriptAction() */ public function getScriptAction() { return $this->scriptAction; } /** * @see Scriptable::setScriptAction() */ public function setScriptAction($scriptAction, array $scriptActionParameters = null) { $this->scriptAction = (string)$scriptAction; $this->setScriptActionParameters($scriptActionParameters); return $this; } /** * @see Scriptable::getScriptActionParameters() */ public function getScriptActionParameters() { return $this->scriptActionParameters; } /** * @see Scriptable::setScriptActionParameters() */ public function setScriptActionParameters(array $scriptActionParameters = null) { $this->scriptActionParameters = $scriptActionParameters; 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 Styleable::getSubStyle() */ public function getSubStyle() { return $this->subStyle; } /** * @see SubStyleable::setSubStyle() */ public function setSubStyle($subStyle) { $this->subStyle = (string)$subStyle; return $this; } /** * @see SubStyleable::setStyles() */ public function setStyles($style, $subStyle) { return $this->setStyle($style) ->setSubStyle($subStyle); } /** * Get selected style * * @api * @return bool */ public function getStyleSelected() { return $this->styleSelected; } /** * Set selected style * * @api * @param bool $styleSelected If the quad should be styled selected * @return static */ public function setStyleSelected($styleSelected) { $this->styleSelected = (bool)$styleSelected; return $this; } /** * Apply the CheckBox Design * * @api * @param CheckBoxDesign $checkBoxDesign CheckBox Design * @return static * @deprecated Use CheckBoxDesign::applyToQuad() * @see CheckBoxDesign::applyToQuad() */ public function applyCheckBoxDesign(CheckBoxDesign $checkBoxDesign) { $checkBoxDesign->applyToQuad($this); return $this; } /** * @see Control::getTagName() */ public function getTagName() { return "quad"; } /** * @see Control::getManiaScriptClass() */ public function getManiaScriptClass() { return "CMlQuad"; } /** * @see Renderable::render() */ public function render(\DOMDocument $domDocument) { $domElement = parent::render($domDocument); if ($this->imageUrl) { $domElement->setAttribute("image", $this->imageUrl); } if ($this->imageId) { $domElement->setAttribute("imageid", $this->imageId); } if ($this->imageFocusUrl) { $domElement->setAttribute("imagefocus", $this->imageFocusUrl); } if ($this->imageFocusId) { $domElement->setAttribute("imagefocusid", $this->imageFocusId); } if ($this->colorize) { $domElement->setAttribute("colorize", $this->colorize); } if ($this->modulizeColor) { $domElement->setAttribute("modulizecolor", $this->modulizeColor); } if (!$this->autoScale) { $domElement->setAttribute("autoscale", 0); } if ($this->autoScaleFixedWidth > 0.) { $domElement->setAttribute("autoscalefixedWidth", $this->autoScaleFixedWidth); } if ($this->keepRatio) { $domElement->setAttribute("keepratio", $this->keepRatio); } if ($this->opacity !== 1.) { $domElement->setAttribute("opacity", $this->opacity); } if ($this->backgroundColor) { $domElement->setAttribute("bgcolor", $this->backgroundColor); } if ($this->focusBackgroundColor) { $domElement->setAttribute("bgcolorfocus", $this->focusBackgroundColor); } if ($this->action) { $domElement->setAttribute("action", $this->action); } if ($this->actionKey) { $domElement->setAttribute("actionkey", $this->actionKey); } if ($this->url) { $domElement->setAttribute("url", $this->url); } if ($this->urlId) { $domElement->setAttribute("urlid", $this->urlId); } if ($this->manialink) { $domElement->setAttribute("manialink", $this->manialink); } if ($this->manialinkId) { $domElement->setAttribute("manialinkid", $this->manialinkId); } if ($this->scriptEvents) { $domElement->setAttribute("scriptevents", 1); } if ($this->scriptAction) { $scriptAction = array($this->scriptAction); if ($this->scriptActionParameters) { $scriptAction = array_merge($scriptAction, $this->scriptActionParameters); } $domElement->setAttribute("scriptaction", implode("'", $scriptAction)); } if ($this->style) { $domElement->setAttribute("style", $this->style); } if ($this->subStyle) { $domElement->setAttribute("substyle", $this->subStyle); } if ($this->styleSelected) { $domElement->setAttribute("styleselected", 1); } return $domElement; } }