Michael A. Peters wrote:
Michael A. Peters wrote:
Michael A. Peters wrote:
*snip*
Is there an easy way around this? IE a php class/function that
understands SVG w/ xlink and can replace the use tags with the
polygons they refer to? If not, I'll have to try to write one, but
I'd rather not ...
I just did, haven't tested yet, but this may work -
This does work (fixed version of function):
function use2polygon($use,$polygon) {
// get the xy coords
$x = 0; $y = 0;
if ($use->hasAttribute('x')) {
$x = 0 + $use->getAttribute('x');
}
if ($use->hasAttribute('y')) {
$y = 0 + $use->getAttribute('y');
}
// clone the polygon
if ($polygon->hasAttribute('points')) {
$points = preg_replace('/\s+/',' ',$polygon->getAttribute('points'));
$pointArray = explode(' ',$points);
$sizeof = sizeof($pointArray);
for ($i=0;$i<$sizeof;$i++) {
$foo = explode(',',$pointArray[$i]);
$foo[0] = $x + $foo[0];
$foo[1] = $y + $foo[1];
$pointArray[$i] = $foo[0] . ',' . $foo[1];
}
$points = implode(' ',$pointArray);
$newPolygon = $polygon->cloneNode(true);
$newPolygon->setAttribute('points',$points);
$use->parentNode->replaceChild($newPolygon,$use);
}
}
doh - for xml sanity, add this before the replaceChild
if ($newPolygon->hasAttribute('id')) {
$newPolygon->removeAttribute('id');
}
Now it works, and makes identical svg image that works with convert.
http://www.shastaherps.org/map/map22.svg vs
http://www.shastaherps.org/map/map22.svg?convert=true
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php