You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
2.2 KiB

<?php namespace RedeyeVentures\GeoPattern;
use RedeyeVentures\GeoPattern\SVGElements\Group;
use RedeyeVentures\GeoPattern\SVGElements\Polyline;
use RedeyeVentures\GeoPattern\SVGElements\Rectangle;
use RedeyeVentures\GeoPattern\SVGElements\Circle;
use RedeyeVentures\GeoPattern\SVGElements\Path;
class SVG {
protected $width;
protected $height;
protected $svgString;
function __construct($options=array())
{
$this->width = 100;
$this->height = 100;
$this->svgString = '';
}
public function setWidth($width)
{
$this->width = floor($width);
return $this;
}
public function setHeight($height)
{
$this->height = floor($height);
return $this;
}
protected function getSvgHeader()
{
return "<?xml version=\"1.0\"?><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"{$this->width}\" height=\"{$this->height}\">";
}
protected function getSvgFooter()
{
return '</svg>';
}
public function addRectangle($x, $y, $width, $height, $args=array())
{
$rectangle = new Rectangle($x, $y, $width, $height, $args);
$this->svgString .= $rectangle;
return $this;
}
public function addCircle($cx, $cy, $r, $args=array())
{
$circle = new Circle($cx, $cy, $r, $args);
$this->svgString .= $circle;
return $this;
}
public function addPath($d, $args=array())
{
$path = new Path($d, $args);
$this->svgString .= $path;
return $this;
}
public function addPolyline($points, $args=array())
{
$polyline = new Polyline($points, $args);
$this->svgString .= $polyline;
return $this;
}
public function addGroup($group, $args=array())
{
if ($group instanceof Group)
{
$group->setArgs($args);
$this->svgString .= $group;
return $this;
}
throw new \InvalidArgumentException("The group provided is not a valid instance of Group.");
}
public function getString()
{
return $this->getSvgHeader().$this->svgString.$this->getSvgFooter();
}
public function __toString()
{
return $this->getString();
}
}