* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2 * @author Icinga Development Team */ // {{{ICINGA_LICENSE_HEADER}}} namespace Icinga\Chart\Primitive; use Icinga\Chart\Render\RenderContext; class Path extends Styleable implements Drawable { public $strokeWidth = 1; protected $points = array(); protected $smooth = false; const TPL_MOVE = "M %s %s "; const TPL_BEZIER = "S %s %s "; const TPL_STRAIGHT = "L %s %s "; public function __construct(array $points) { $this->append($points); } public function append(array $points) { $this->points += $points; return $this; } public function setSmooth($bool) { $this->smooth = $bool; } public function toSvg(RenderContext $ctx) { $doc = $ctx->getDocument(); $group = $doc->createElement('g'); $pathDescription = ''; $tpl = self::TPL_MOVE; foreach ($this->points as $point) { $coords = $ctx->toAbsolute($point[0], $point[1]); $pathDescription .= vsprintf($tpl, $coords); $tpl = self::TPL_STRAIGHT; } $path = $doc->createElement('path'); $path->setAttribute('d', $pathDescription); $path->setAttribute('style', $this->getStyle()); $group->appendChild($path); return $group; } }