Re: Modify a loaded SVG document with Graphics2D?

[email protected]
Newsgroups gmane.text.xml.batik.user
Message-ID <[email protected]>
> is it possible to load an SVG document from file and display it in an
> SVGCanvas and additionally modify that document via a Graphics2D object?
>
> For example, is the following possible:
> ------------------/------------------
> final JFrame jFrame= new JFrame();
> final SVGCanvas canvas= new SVGCanvas();
> canvas.setURI(new File("mySVGFile.svg").toURI().toString());
> jFrame.getContentPane().add(canvas);
> jFrame.pack();
> jFrame.setVisible(true);
>
> [...]
>
> final SVGGraphics2D g= new SVGGraphics2D(canvas.getSVGDocument());
> final Rectangle r= new Rectangle(10,10,100,100);
> g.setPaint(Color.RED);
> g.setStroke(new BasicStroke(15f));
> g.draw(r);
>
> [...]
> ------------------/------------------
> to modify the image in the canvas?

I found it out.
It is:

------------------/------------------
Element root = canvas.getDocument().getDocumentElement();
g.getRoot(root);
------------------/------------------

The rather confusingly named method getRoot(Element) does the writing by
appending the drawn elements to the end of the SVG document.
Unfortunately, batik always adds an (empty) <def> element with
id="genericDefs". So if modifying the document is done multiple times, you
end up with several <def> elements with the same id....

Regards
Marco
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.