You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-users@xmlgraphics.apache.org by Selva <se...@yahoo.co.in> on 2006/04/10 09:01:50 UTC
move shapes in the Canvas
Hi All,
I am trying to move the rectangle element in JSVGcanvas. But it is not moving
properly when i move the mouse faster. i have referred
http://wiki.apache.org/xmlgraphics-batik/DragTutorial. But still i couldn't
able to move the elements properly.
This is code i used in mouse move handler.
DOMMouseEvent elEvt = (DOMMouseEvent)evt;
int nowToX = elEvt.getClientX();
int nowToY = elEvt.getClientY();
SVGDocument svgDocument = svgCanvas.getSVGDocument();
SVGPoint trans = svgDocument.getRootElement().getCurrentTranslate();
float scale = svgDocument.getRootElement().getCurrentScale();
nowToX = (int)((nowToX - trans.getX()) / scale);
nowToY = (int)((nowToY - trans.getY()) / scale);
if (action == DRAG) {
((Element)actionNode).setAttribute("x", "" + (nowToX - dx));
((Element)actionNode).setAttribute("y", "" + (nowToY - dy));
} else {
float cW = Float.parseFloat(((Element)actionNode).getAttribute("width"));
float cH = Float.parseFloat(((Element)actionNode).getAttribute("height"));
float ar = cW / cH;
float nW = nowToX - dx;
float nH = nowToY - dy;
if (nW / nH < ar) {
nW = ar * nH; } else {
nH = nW / ar; }
((Element)actionNode).setAttribute("width", "" + nW);
((Element)actionNode).setAttribute("height", "" + nH);
}
Please give the suggestions to handle this situation.
Thanks,
Selva
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org
Re: move shapes in the Canvas
Posted by th...@kodak.com.
Hi Selva,
The problem is likely that if the mouse moves off the element in one
mouse move
the dragged element will not recieve the mouse move event (it will recieve
a mouse
out event). Typically the simplest way to fix this is to insert a 'glass
pane' (an invisible
rect that covers the entire canvas I tend to set fill and stroke to none
and set
pointer-events to 'fill'). If you append this element to the root SVG
element it
will capture all mouse events until you remove it - which is exactly what
you want
(don't forget to add your mouse move listener to the glass-pane element).
You can also get a similar effect if you register your event listener
on the root
SVG element, but you must have a 'background' element that is 'under' all
others
otherwise if your canvas falls off all elements there is no target for the
mouse event.
news <ne...@sea.gmane.org> wrote on 04/10/2006 03:01:50 AM:
> Hi All,
>
> I am trying to move the rectangle element in JSVGcanvas. But it is not
moving
> properly when i move the mouse faster. i have referred
> http://wiki.apache.org/xmlgraphics-batik/DragTutorial. But still i
couldn't
> able to move the elements properly.
>
> This is code i used in mouse move handler.
>
> DOMMouseEvent elEvt = (DOMMouseEvent)evt;
>
> int nowToX = elEvt.getClientX();
> int nowToY = elEvt.getClientY();
>
> SVGDocument svgDocument = svgCanvas.getSVGDocument();
> SVGPoint trans = svgDocument.getRootElement().getCurrentTranslate();
> float scale = svgDocument.getRootElement().getCurrentScale();
> nowToX = (int)((nowToX - trans.getX()) / scale);
> nowToY = (int)((nowToY - trans.getY()) / scale);
> if (action == DRAG) {
> ((Element)actionNode).setAttribute("x", "" + (nowToX - dx));
> ((Element)actionNode).setAttribute("y", "" + (nowToY - dy));
> } else {
>
> float cW =
Float.parseFloat(((Element)actionNode).getAttribute("width"));
> float cH =
Float.parseFloat(((Element)actionNode).getAttribute("height"));
> float ar = cW / cH;
> float nW = nowToX - dx;
> float nH = nowToY - dy;
> if (nW / nH < ar) {
> nW = ar * nH; } else {
> nH = nW / ar; }
> ((Element)actionNode).setAttribute("width", "" + nW);
> ((Element)actionNode).setAttribute("height", "" + nH);
> }
>
> Please give the suggestions to handle this situation.
>
> Thanks,
> Selva
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
> For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org