Hello,

I have only recently started using Batik and this is my first post to the Batik 
maillist.

I am experiencing problems working with paths. This step-by-step description 
gives you an idea about what I am trying to achieve.

1. I read an exisiting svg file that contains a path element
2. Get path information
3. Draw shapes along the path

This is my svg file (named "basedrawing.svg", generated with inkscape, but 
modifed to remove all clutter):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/";
   xmlns:cc="http://creativecommons.org/ns#";
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
   xmlns:svg="http://www.w3.org/2000/svg";
   xmlns="http://www.w3.org/2000/svg";
   >
    <path
        id="test"
        d="m 162.875,146.15625 -0.0312,1 c 162.80372,4.28431 255.5724,32.82885 
307.625,60.28125 26.0263,13.7262 41.8838,27.18577 51.21875,37.1875 
9.33495,10.00173 12.125,16.5 12.125,16.5 l 0.9375,-0.375 c 0,0 -2.9287,-6.72495 
-12.34375,-16.8125 -9.4151,-10.08755 -25.35224,-23.6012 -51.4688,-37.375 C 
418.70439,179.0149 325.78557,150.44337 162.875,146.15625 z"
    />
</svg>
This file is rendered correctly in the Firefox webbrowser.

My next goal is to read in this svg file and generate a object representation 
of the path element (try to make it a valid SVGOMPathElement instance) This is 
the java code with which I try to read the svg:

import java.io.File;
import java.io.IOException;
import java.net.URI;
import org.apache.batik.dom.svg.SAXSVGDocumentFactory;
import org.apache.batik.dom.svg.SVGOMPathElement;
import org.apache.batik.util.XMLResourceDescriptor;
import org.w3c.dom.Element;
import org.w3c.dom.svg.SVGDocument;

public class TestSVGDomParser {

    public static void main(String[] args) throws IOException {

        URI fileURI = new File("basedrawing.svg").toURI();

        String parser = XMLResourceDescriptor.getXMLParserClassName();
        SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser);
        SVGDocument doc = (SVGDocument) f.createDocument( fileURI.toString() );

        // try to get a path using the unique identifier
        Element e = doc.getElementById("test");

        // cast to path
        SVGOMPathElement path = (SVGOMPathElement) e;

        // works fine
        System.out.println( path.getAttribute("d") );

        // does not work, throws a null pointer exception
        System.out.println( path.getTotalLength() );
    }

}
The problem I think is that the cast of the e (instance of Element) to path 
(instance of SVGOMPathElement) does not trigger the internal interpretation of 
the 'd' attribute. I conclude from this that I do not follow the proper 
procedures to build the object representation of the svg document.

Could someone advise me on how to proceed?

Thanks in advance,

Pim


--
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

   Pim van Nierop

   Center for Neurogenomics and Cognitive Research
   Faculty of Earth and Life Sciences
   Vrije Universiteit
   Amsterdam
   Email    pim.van.nie...@cncr.vu.nl
   Tel.     +31 (0)20 5987114
   Fax.     +31 (0)20 5987112

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

Reply via email to