Initial Commit
This commit is contained in:
153
svgparser/parser/objects/SVG.php
Normal file
153
svgparser/parser/objects/SVG.php
Normal file
@ -0,0 +1,153 @@
|
||||
<?php
|
||||
/*
|
||||
SVG to dojox.gfx Parser
|
||||
Copyright (C) 2009 Aaron Lindsay <aclindsay@aclindsay.com>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
class SVG {
|
||||
private $paths;
|
||||
private $rects;
|
||||
private $circles;
|
||||
private $ellipses;
|
||||
private $lines;
|
||||
private $polylines;
|
||||
private $texts;
|
||||
private $linearGradients;
|
||||
private $radialGradients;
|
||||
|
||||
public function __construct() {
|
||||
$this->paths = array();
|
||||
$this->rects = array();
|
||||
$this->circles = array();
|
||||
$this->ellipses = array();
|
||||
$this->lines = array();
|
||||
$this->polylines = array();
|
||||
$this->texts = array();
|
||||
|
||||
$this->linearGradients = array();
|
||||
$this->radialGradients = array();
|
||||
}
|
||||
|
||||
public function addPath($path) {
|
||||
$this->paths[] = $path;
|
||||
}
|
||||
public function getPaths() {
|
||||
return $this->paths;
|
||||
}
|
||||
|
||||
public function addRectangle($rect) {
|
||||
$this->rects[] = $rect;
|
||||
}
|
||||
public function getRectangles() {
|
||||
return $this->rects;
|
||||
}
|
||||
|
||||
public function addCircle($circle) {
|
||||
$this->circles[] = $circle;
|
||||
}
|
||||
public function getCircles() {
|
||||
return $this->circles;
|
||||
}
|
||||
|
||||
public function addEllipse($ellipse) {
|
||||
$this->ellipses[] = $ellipse;
|
||||
}
|
||||
public function getEllipses() {
|
||||
return $this->ellipses;
|
||||
}
|
||||
|
||||
public function addLine($line) {
|
||||
$this->lines[] = $line;
|
||||
}
|
||||
public function getLines() {
|
||||
return $this->lines;
|
||||
}
|
||||
|
||||
public function addPolyline($polyline) {
|
||||
$this->polylines[] = $polyline;
|
||||
}
|
||||
public function getPolylines() {
|
||||
return $this->polylines;
|
||||
}
|
||||
|
||||
public function addText($text) {
|
||||
$this->texts[] = $text;
|
||||
}
|
||||
public function getTexts() {
|
||||
return $this->texts;
|
||||
}
|
||||
|
||||
public function addLinearGradient($gradient) {
|
||||
$this->linearGradients[] = $gradient;
|
||||
}
|
||||
public function getLinearGradients() {
|
||||
return $this->linearGradients;
|
||||
}
|
||||
|
||||
public function addRadialGradient($gradient) {
|
||||
$this->radialGradients[] = $gradient;
|
||||
}
|
||||
public function getRadialGradients() {
|
||||
return $this->radialGradients;
|
||||
}
|
||||
|
||||
public function getCompleteLinearGradients() {
|
||||
$validGradients = array();
|
||||
foreach($this->linearGradients as $gradient) {
|
||||
if ($gradient->isValid()) {
|
||||
$validGradients[] = $gradient;
|
||||
} else if ($gradient->getLink() != null) {
|
||||
$newGradient = $this->linkGradient($gradient);
|
||||
if ($newGradient->isValid()) {
|
||||
$validGradients[] = $newGradient;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $validGradients;
|
||||
}
|
||||
|
||||
public function getCompleteRadialGradients() {
|
||||
$validGradients = array();
|
||||
foreach($this->radialGradients as $gradient) {
|
||||
if ($gradient->isValid()) {
|
||||
$validGradients[] = $gradient;
|
||||
} else if ($gradient->getLink() != null) {
|
||||
$newGradient = $this->linkGradient($gradient);
|
||||
if ($newGradient->isValid())
|
||||
$validGradients[] = $gradient;
|
||||
}
|
||||
}
|
||||
return $validGradients;
|
||||
}
|
||||
|
||||
private function linkGradient($gradient) {
|
||||
//search through all gradients for one with an id matching the link field
|
||||
$link = $gradient->getLink();
|
||||
$toLink = null;
|
||||
foreach($this->linearGradients as $match) {
|
||||
if ($match->getId() == $link) {
|
||||
$toLink = $match;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ($toLink != null) {
|
||||
$gradient->setStops($toLink->getStops());
|
||||
}
|
||||
return $gradient;
|
||||
}
|
||||
}
|
||||
?>
|
Reference in New Issue
Block a user