Thanks Thomas.
one final question. when drawing a freehand stroke i had been using the
mouseDragged action listener to run the paint method to draw a consecutive
straight lines from one point to the next (as i had always asumed it would
be done) however they are not recognised as one single stroke but as a
series of seperate joined lines which means they cannot be selected in their
entirity witha mouse click.
long story short.... is there another way to draw a freehand stroke to avoid
this? grouping the lines somehow??
As i said before im new to both java and svg so im sorry about what are
probably pretty stupid questions.
----- Original Message -----
From: "Thomas DeWeese" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Sunday, March 07, 2004 4:04 PM
Subject: Re: Newbie question: painting delays?
> Danny Browne wrote:
>
> > when adding an element to an svg document i am getting a short delay.
ie. it
> > takes a second or two for the element to appear after the mouse is
clicked.
> > This in it's self is not a major issue but when attempting to draw a
free
> > hand line dragging the mouse to quickly causes gaps to be created in the
> > line.
>
> For complex SVG documents it might take a second or two for
> it to update after an element was added. However I suspect that
> the problem is that you are not making your changes in the
> UpdateManager thread.
>
> It looks like you probably want to run the 'paint' function
> in the UpdateManager thread:
>
> final <sometype> myObject=this;
> svgCanvas.getUpdateManager().getUpdateRunnableQueue().invokeLater
> (new Runnable() {
> public void run() {
> myOBject->paint(....);
> });
>
> > am i doing this correctly? is there some code i am missing? can this be
> > rectified? my code is below and is rather hap hazzard any pointers on
> > cleaning it up would be appreciated...
> >
> > kind regards
> >
> > Danny Browne
> >
> > public void registerListeners(){
> >
> > // Set the canvas mouse listeners
> > svgCanvas.addMouseListener(new java.awt.event.MouseAdapter() {
> > public void mousePressed(java.awt.event.MouseEvent e) {
> >
> > statusLabel.setText("Pressed......");
> > startPoint = e;
> >
> > }
> >
> > public void mouseReleased(java.awt.event.MouseEvent e) {
> >
> > int x = startPoint.getX();
> > String sx = new Integer(x).toString();
> > int y = startPoint.getY();
> > String sy = new Integer(y).toString();
> >
> > int w = e.getX();
> > String sw = new Integer(w).toString();
> > int h = e.getY();
> > String sh = new Integer(h).toString();
> >
> > w = w-x;
> > h = h-y;
> >
> >
> > paint(sx,sy,sw,sh);
> >
> > }
> > });
> >
> > svgCanvas.addMouseMotionListener(new
> > java.awt.event.MouseMotionAdapter() {
> > public void mouseDragged(java.awt.event.MouseEvent e) {
> >
> > int x = startPoint.getX();
> > String sx = new Integer(x).toString();
> > int y = startPoint.getY();
> > String sy = new Integer(y).toString();
> > int x2 = e.getX();
> > String sx2 = new Integer(x2).toString();
> > int y2 = e.getY();
> > String sy2 = new Integer(y2).toString();
> >
> > paint(sx,sy,sx2,sy2);
> >
> > startPoint = e;
> > }
> > });
> >
> > }
> >
> >
> >
> > which calls this method paint method.
> >
> >
> >
> > public void paint (String sx, String sy, String sw, String sh){
> >
> > toolType = getTool();
> >
> > if (toolType == 1){
> >
> > statusLabel.setText("Select Tool Selsected...");
> >
> > }
> >
> > else if (toolType == 2){
> >
> > Document doc = svgCanvas.getSVGDocument();
> >
> > String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
> >
> > // get the root element (the svg element)
> > Element svgRoot = doc.getDocumentElement();
> > // create the rectangle
> > Element line = doc.createElementNS(svgNS, "line");
> > line.setAttributeNS(null, "x", sx);
> > line.setAttributeNS(null, "y", sy);
> > line.setAttributeNS(null, "y2", sw);
> > line.setAttributeNS(null, "y2", sh);
> > line.setAttributeNS(null, "style",
"stroke:black;stroke-width:2");
> > //attach the rectangle to the svg root element
> > svgRoot.appendChild(line);
> >
> > }
> >
> > else if (toolType == 3){
> >
> > statusLabel.setText("Paint Tool Selsected...");
> >
> > }
> >
> > else if (toolType == 4){
> >
> > Document doc = svgCanvas.getSVGDocument();
> >
> > String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
> >
> > statusLabel.setText("w: " +sw+ " h: " +sh+ " x: " +sx+ " y: "
> > +sy);
> >
> > // get the root element (the svg element)
> > Element svgRoot = doc.getDocumentElement();
> > // create the rectangle
> > Element line = doc.createElementNS(svgNS, "line");
> > line.setAttributeNS(null, "x", sx);
> > line.setAttributeNS(null, "y", sy);
> > line.setAttributeNS(null, "y2", sw);
> > line.setAttributeNS(null, "y2", sh);
> > line.setAttributeNS(null, "style",
"stroke:black;stroke-width:2");
> > //attach the rectangle to the svg root element
> > svgRoot.appendChild(line);
> >
> > }
> >
> > else if (toolType == 5){
> >
> > Document doc = svgCanvas.getSVGDocument();
> >
> > String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
> >
> > // get the root element (the svg element)
> > Element svgRoot = doc.getDocumentElement();
> > // create the rectangle
> > Element rectangle = doc.createElementNS(svgNS, "rect");
> > rectangle.setAttributeNS(null, "x", sx);
> > rectangle.setAttributeNS(null, "y", sy);
> > rectangle.setAttributeNS(null, "width", sw);
> > rectangle.setAttributeNS(null, "height", sh);
> > rectangle.setAttributeNS(null, "fill", "black");
> > //attach the rectangle to the svg root element
> > svgRoot.appendChild(rectangle);
> >
> > }
> >
> > else if (toolType == 6){
> >
> > Document doc = svgCanvas.getSVGDocument();
> >
> > String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
> >
> > // get the root element (the svg element)
> > Element svgRoot = doc.getDocumentElement();
> > // create the rectangle
> > Element circle = doc.createElementNS(svgNS, "circle");
> > circle.setAttributeNS(null, "cx", sx);
> > circle.setAttributeNS(null, "r", "25");
> > circle.setAttributeNS(null, "cy", sy);
> > circle.setAttributeNS(null, "style", "fill:crimson");
> > //attach the rectangle to the svg root element
> > svgRoot.appendChild(circle);
> >
> > }
> >
> > }
> >
> >
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > 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]