/usr/share/php/Icinga/Chart/Primitive/Canvas.php is in php-icinga 2.1.0-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | <?php
/* Icinga Web 2 | (c) 2013-2015 Icinga Development Team | GPLv2+ */
namespace Icinga\Chart\Primitive;
use DOMElement;
use Icinga\Chart\Render\LayoutBox;
use Icinga\Chart\Render\RenderContext;
/**
* Canvas SVG component that encapsulates grouping and padding and allows rendering
* multiple elements in a group
*
*/
class Canvas implements Drawable
{
/**
* The name of the canvas, will be used as the id
*
* @var string
*/
private $name;
/**
* An array of child elements of this Canvas
*
* @var array
*/
private $children = array();
/**
* When true, this canvas is encapsulated in a clipPath tag and not drawn
*
* @var bool
*/
private $isClipPath = false;
/**
* The LayoutBox of this Canvas
*
* @var LayoutBox
*/
private $rect;
/**
* The aria role used to describe this canvas' purpose in the accessibility tree
*
* @var string
*/
private $ariaRole;
/**
* Create this canvas
*
* @param String $name The name of this canvas
* @param LayoutBox $rect The layout and size of this canvas
*/
public function __construct($name, LayoutBox $rect)
{
$this->rect = $rect;
$this->name = $name;
}
/**
* Convert this canvas to a clipPath element
*/
public function toClipPath()
{
$this->isClipPath = true;
}
/**
* Return the layout of this canvas
*
* @return LayoutBox
*/
public function getLayout()
{
return $this->rect;
}
/**
* Add an element to this canvas
*
* @param Drawable $child
*/
public function addElement(Drawable $child)
{
$this->children[] = $child;
}
/**
* Create the SVG representation from this Drawable
*
* @param RenderContext $ctx The context to use for rendering
* @return DOMElement The SVG Element
*/
public function toSvg(RenderContext $ctx)
{
$doc = $ctx->getDocument();
if ($this->isClipPath) {
$outer = $doc->createElement('defs');
$innerContainer = $element = $doc->createElement('clipPath');
$outer->appendChild($element);
} else {
$outer = $element = $doc->createElement('g');
$innerContainer = $doc->createElement('g');
$innerContainer->setAttribute('x', 0);
$innerContainer->setAttribute('y', 0);
$innerContainer->setAttribute('id', $this->name . '_inner');
$innerContainer->setAttribute('transform', $this->rect->getInnerTransform($ctx));
$element->appendChild($innerContainer);
}
$element->setAttribute('id', $this->name);
foreach ($this->children as $child) {
$innerContainer->appendChild($child->toSvg($ctx));
}
if (isset($this->ariaRole)) {
$outer->setAttribute('role', $this->ariaRole);
}
return $outer;
}
/**
* Set the aria role used to determine the meaning of this canvas in the accessibility tree
*
* The role 'presentation' will indicate that the purpose of this canvas is entirely decorative, while the role
* 'img' will indicate that the canvas contains an image, with a possible title or a description. For other
* possible roles, see http://www.w3.org/TR/wai-aria/roles
*
* @param $role string The aria role to set
*/
public function setAriaRole($role)
{
$this->ariaRole = $role;
}
}
|