154 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			154 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|   | <?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; | ||
|  | 	} | ||
|  | } | ||
|  | ?>
 |