Hi there,
Just to let you know that I've solved my problem, rather than adding to
the svg document or to the dom I decided to draw on the Overlay method and
it works! here's the code:
class Draw implements Overlay
{
ArrayList circls;
Color c;
public Draw(ArrayList a, Color c)
{
circls = a;
this.c = c;
}
public void paint (Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
AffineTransform oldAT = g2d.getTransform();
g2d.transform(canvas.getRenderingTransform());
// do painting
Iterator i = circls.iterator();
while (i.hasNext())
{
Point2D pt2d = (Point2D)i.next();
g2d.setColor(c);
g2d.fillOval((int)pt2d.getX(),(int)pt2d.getY(),22,22);
//g2d.drawOval((int)pt2d.getX(),(int)pt2d.getY(),22,22);
}
//reset graphics, so other overlays draw
correctly
g2d.setTransform(oldAT);
}
}
Only now I have the problem when I zoomIn the red-cirlcs also get bigger,
I dnt want them to change the size ...I was thinking of removing them when
zoomIn and then redraw them, I dnt know how code-efficient that is? Also,
how would I remove the circles? Any ideas :(
Many thx
yasmin
> Hi Yasmin,
>
> [EMAIL PROTECTED] wrote on 02/28/2006 05:00:41 PM:
>
>> Sorry, should had given the complete code, so you can see:
>>
>> canvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
>>
>> canvas.getUpdateManager().getUpdateRunnableQueue().invokeLater(new
>> Runnable() {
>
> The UpdateManager and RunnableQueue only become available after the
> first
> rendering completes. Alternately you could put your code to create the
> Circles in the SVG onload event callback. There are good examples in the
> JavaScripting and JSVGCanvas sections of the Batik web site that covers
> how
> to do this (I would tend towards registering an 'onload' event handler).
>
> http://xmlgraphics.apache.org/batik/javaScripting.html
> http://xmlgraphics.apache.org/batik/svgcanvas.html
>
>>
>> public void run()
>> {
>> SVGDocument doc = canvas.getSVGDocument();
>> String SVGNS = "http://www.w3.org/2000/svg";
>> Iterator i = spots.iterator();
>> Element g; // =
> doc.getElementById("circleGroup");
>> g = doc.createElementNS(SVGNS,"g");
>> g.setAttributeNS(null, "id", "circleGroup");
>> doc.getRootElement().appendChild(g);
>>
>> while (i.hasNext())
>> {
>> Point2D pt2d = (Point2D) i.next();
>> Element e =
> doc.createElementNS(SVGNS,"circle");
>> e.setAttributeNS(null,"cx",""+pt2d.getX());
>> e.setAttributeNS(null,"cy",""+pt2d.getY());
>> e.setAttributeNS(null,"r","8");
>> e.setAttributeNS(null,"fill","Red");
>> g.appendChild(e);
>> }
>> }
>> });
>>
>> Many thx
>>
>> yasmin
>>
>>
>> > Hi Yasmin,
>> >
>> > [EMAIL PROTECTED] wrote on 02/28/2006 03:37:12 PM:
>> >
>> >> ...yes you are right I haven't created a group with attribute 'id'
> set
>> > to
>> >> 'circlegroup', not sure how to :( I'm a complete novice to SVG and
> have
>> >> embarked on this ambitiouse project I'm finding it very difficult and
>> > time
>> >> is running out, pls ELP!
>> >
>> > I would add something like:
>> >
>> > if (g == null) {
>> > g = doc.createElementNS(SVGNS,"g");
>> > g.setAttributeNS(null, "id", "circleGroup");
>> > doc.getRootElement().appendChild(g);
>> > }
>> >
>> > Right after you call getElementById.
>> > In your case you could probably also just skip the
>> > 'getElementById' and 'if' and just create the element in all cases
>> > (but you should avoid creating it twice - it's bad to have two
>> > elements with the same 'id' in one document).
>> >
>> > BTW If at some point you want to remove the group (and
>> > consiquently all it's children) you can use:
>> > g.getParentNode().removeChild(g);
>> >
>> > Good luck!
>> >
>> > ---------------------------------------------------------------------
>> > 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]
>>
>
>
> ---------------------------------------------------------------------
> 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]