Don,

I am not quite sure why adding the value from getRoot would not work,
but I agree this is laborious. Adding a getRoot() method that would
take the svg element you want as a parameter would be simpler (this
way you would not have to stick the getRoot() <svg> element under 
the Document's root <svg> element or do what you ended up doing.

I have added an RFE for that:

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9520

I'll try to get to it soon (but if you feel like doing it, thanks for
having a go at it!).

Vincent.

Don Willems wrote:
> 
> Yes, that works, thank you Vincent.
> 
> But I'm afraid that my solution is a bit laborious.
> 
> // --> old code
> DOMImplementation domImpl = SVGDOMImplementation.getDOMImplementation();
> String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
> Document document = domImpl.createDocument(svgNS, "svg", null);
> SVGGraphics2D svgGenerator = new SVGGraphics2D(document);
> paintRenderer(svgGenerator); //--> paints shapes on the graphics context
> Element svgRoot = document.getDocumentElement();
> svgRoot.setAttributeNS(null, "width", "400");
> svgRoot.setAttributeNS(null, "height", "450");
> // --> new code
> // gets the svg elements from the generator
> Element root = svgGenerator.getRoot();
> // adds the attributes of the generated node to the root node of the document
> NamedNodeMap attrs = root.getAttributes();
> for(int i=0;i<attrs.getLength();i++){
> Node n = attrs.item(i);
> svgRoot.setAttributeNS(null, n.getNodeName(), n.getNodeValue());
> }
> // adds the subnodes of the generated node to the root node of the document
> NodeList nl = root.getChildNodes();
> for(int i=0;i<nl.getLength();i++){
> Node n = nl.item(i);
> svgRoot.appendChild(n);
> }
> 
> The problem is that I cannot copy the generated svg node into the document. I've 
>tried using
> the methods importNode and appendChild on the document, but none seem to work. So I 
>had to add every subnode and every attribute of the generated node explicitly.
> Any Ideas?
> 
> Don
> 
>      Don,
> 
>      The SVGGraphics2D does not populate the Document you gave it at
>      construction time. It is only used as a factory for creating all
>      the SVG content.
> 
>      What you'll have to do is get the root from the SVGGraphics2D
>      (getRoot method) and append it to your 'svgRoot'.
> 
>      Good luck,
>      Vincent.
> 
>      Don Willems wrote:
> 
>           Hi,
>           I have a problem with using the setSVGDocument method in JSVGCanvas.
>           The SVG document that I want to render on the JSVGCanvas is generated by
>           my program. When I want to render that document nothing seems to happens
>           (if I use listeners on the canvas I can see that the document is build,
>           and then rendered, but nothing is shown on the canvas).
>           I have tried to render SVG documents from a URI and that works. I have
>           also tried to save the SVG document generated by my program to a file
>           and that works also (I can view the SVG perfectly in Adobes Viewer).
> 
>           What do I have to do to get the setSVGDocument method to work?
> 
>           My code:
> 
>           DOMImplementation domImpl =
>           SVGDOMImplementation.getDOMImplementation();
>           String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
>           Document document = domImpl.createDocument(svgNS, "svg",
>           null);
>           SVGGraphics2D svgGenerator = new SVGGraphics2D(document);
>           paintRenderer(svgGenerator); //--> paints shapes on the
>           graphics context
>           Element svgRoot = document.getDocumentElement();
>           svgRoot.setAttributeNS(null, "width", "400");
>           svgRoot.setAttributeNS(null, "height", "450");
> 
>           setSVGDocument((document);
> 
>           Many thanks,
>           Don
> 
>           ---------------------------------------------------------------------
>           To unsubscribe, e-mail: [EMAIL PROTECTED]
>           For additional commands, e-mail: [EMAIL PROTECTED]
> 
>      ---------------------------------------------------------------------
>      To unsubscribe, e-mail: [EMAIL PROTECTED]
>      For additional commands, e-mail: [EMAIL PROTECTED]
> 
> ----------------------------------------------
> Don Willems
> http://www.wonco.org
> ----------------------------------------------
> [EMAIL PROTECTED]
> +31 24 388 69 44 (home)
> +31 6 25 188 497 (mobile)
> +31 24 35 21 584 (work)
> ----------------------------------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to