On Wed, 19 May 2004, Archie Cobbs wrote:
> David Bullock wrote:
> > [I just want to take a 'template shape' from an SVG file,
> > copy it a few times, translate each one, and print it out.
> > If there's a better way to do this than GVT, I'd love to
> > hear your suggestions. ]
>
> I don't know if this is any better or worse, but I acomplish this
> same idea (I think) by editing the SVG DOM...
>
> In the SVG file are the icons which are just invisible nodes defined
> inside the <defs> tag and having "id" attributes with known values.
>
> Then, using the DOM API, I add append a new <use> to the top level
> <svg> tag like this:
>
> SVGElement topNode = ... // find the top <svg> node
> ...
> String iconId = ... // id of the icon you want to display
> SVGElement use = (SVGElement)svg.createElementNS(
> SVGDOMImplementation.SVG_NAMESPACE_URI, "use");
> use.setAttributeNS(XPATH_NAMESPACE_URI, "href", "#" + iconId);
> use.setAttribute("visibility", "visible");
> use.setAttribute("x", "" + x);
> use.setAttribute("y", "" + y);
> topNode.appendChild(use);
Hi Archie,
This method worked well for me, thanks.
I suppose it works well to have a common semantic model (the
SVG DOM) for vector graphics. I do find W3 DOM's awkward
to work with, but that's the price you pay for using only
IDL-compatible Java idioms, I guess.
The GVTBuilder code, upon encountering a <svg:use/> element,
simply builds a new GraphicsNode corresponding to the target
of the use and the use's translations, thus achieving the same
effect as I intended by cloning a GrahicsNode.
thanks,
David
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]