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 "Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com> on 2006/08/14 13:29:19 UTC

SVGOMGElement and coordinates?

Hello,

I use batik to operate SVG at runtime. 

The question is how can I get SVGOMGElement coordinates when walking DOM
tree of the SVG document?


The reason I'm asking such a thing it that requirements are to display
info popup near named elements of SVG. If I had coordinates of such an
element I could use DOM to add new element to the tree with computed
coordinates for correct positioning of the info popup.

Thanks
Nazar


---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org


Re: SVGOMGElement and coordinates?

Posted by Urs Reupke <Ur...@gmx.net>.
Hello Nazar,

maybe this class will help you[1].

> The question is how can I get SVGOMGElement coordinates when walking DOM
> tree of the SVG document?

It takes a SVGLocatable (superinterface to SVGOMGElement) and calculates
the bounding box.

Regards
-Urs

[1]http://fisheye3.cenqua.com/browse/anathema/trunk/Charm_Tree/src/net/sf/anathema/charmtree/batik/BoundsCalculator.java?r=51
-- 


Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen!
Ideal für Modem und ISDN: http://www.gmx.net/de/go/smartsurfer

---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org


Re: SVGOMGElement and coordinates?

Posted by th...@kodak.com.
Hi Nazar,

"Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com> wrote on 08/14/2006 
11:54:58 AM:

> the only difference is that I need SVGRect from different element, not 
> the rootGN. Like next:

   This should not be a problem.  The only thing I can comment on
is that you are dropping references to a lot of objects that
need to be alive for the SVG DOM to work (in particular the
BridgeContext and the rootGN).  I would think that until you
called BridgeContext.dispose() the DOM tree would be sufficient 
to keep everything alive but in particular you may need to
hold a reference to the rootGN.

   I would do three things:
        1) try calling getBBox on the root SVG element in the
           parseSVG method (to see if this is working at all 
         for you).
        2) If #1 works try getBBox in the parseSVG method for
           one (or more) of the Element's you want.
        3) If #2 works then hold the reference and see if it
           works later.

   Also it's worth noting that if an element isn't rendered
(in a defs, has "display" set to "none", etc) then it won't 
have a bbox.

>     public static SVGDocument parseSvg(String uri) {
>         UserAgent userAgent = new UserAgentAdapter();
>         DocumentLoader loader = new DocumentLoader(userAgent);
>         SVGDocument doc;
>         try {
>             doc = (SVGDocument) loader.loadDocument(uri);
>         } catch (Exception e) {
>             e.printStackTrace();
>             throw new RuntimeException(e);
>         }
>         BridgeContext ctx = new BridgeContext(userAgent, loader);
>         ctx.setDynamicState(BridgeContext.DYNAMIC);
>         GVTBuilder builder = new GVTBuilder();
>         GraphicsNode rootGN = builder.build(ctx, doc);
>         loader.dispose();
>         return doc;
>     }
> 
> //this will return null.
>     public static SVGRect getSVGRect(SVGLocatable e) {
>         return e.getBBox();
>     }
> 
> thomas.deweese@kodak.com wrote:
> > Hi Nazar,
> >
> > "Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com> wrote on 08/14/2006 
> > 09:55:27 AM:
> >
> > 
> >> No I don't use JSVGCanvas. My application is using servlets. 
Basically I 
> >> 
> >
> > 
> >> construct SVGDocument from file and while visiting elements of its 
DOM 
> >> tree I need a coordinate of the element for later use
> >>
> >> To boot SVG DOM you mean a code like this ?
> >> 
> >
> >    Close but for correct results you need to build it from the root
> > of the SVG tree (just like the Wiki page).  You should also only do 
> > this once for the whole document right after loading it (not for 
> > each element).
> >
> > 
> >>     public static Rectangle2D getBounds2D(Element e) {
> >>         UserAgent userAgent = new UserAgentAdapter();
> >>         DocumentLoader loader = new DocumentLoader(userAgent);
> >>         BridgeContext ctx = new BridgeContext(userAgent, loader);
> >>         ctx.setDynamicState(BridgeContext.DYNAMIC);
> >>         GVTBuilder builder = new GVTBuilder();
> >>         GraphicsNode rootGN = builder.build(ctx, e);
> >>         return rootGN.getBounds();
> >>
> >>     }
> >> Note: when visiting an element it is already of type SVGOMGElement, 
> >> hence there no need to boot SVG DOM or am I wrong?
> >> 
> >
> >    You need to boot the SVG DOM in all cases, if you want to use it.
> >
> > 
> >> If you look at my code at line last but one, rootGN = 
builder.build(ctx, 
> >> 
> >
> > 
> >> e); it assigns null to rootGN.
> >> 
> >
> >    Right you need to build from root of Document.
> >
> > 
> >>
> >> thomas.deweese@kodak.com wrote:
> >> 
> >>> Hi Nazar,
> >>>
> >>> "Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com> wrote on 
08/14/2006 
> >>> 09:16:01 AM:
> >>>
> >>>
> >>> 
> >>>> SVGLocatable.getBBox(elem) returns null No javadoc comments are 
there 
> >>>> 
> > to 
> > 
> >>> 
> >>>> unveil the reason of such behaviour
> >>>>
> >>>> Is there the other way to get coordinates of SVGOMGElement ?
> >>>>
> >>>> 
> >>>     How are you using the Document?  Is it in the JSVGCanvas?
> >>> Are you trying to call this method before loading the document?
> >>>
> >>>     For these methods to work you need to boot the SVG DOM.
> >>> This normally happens when you load the document in the Canvas
> >>> (you may need to set document state to ALWAYS_DYNAMIC on the
> >>> canvas before loading the document if there are no obvious dynamic 
> >>> features of the document).
> >>>
> >>>     If you are trying to use these features outside of the
> >>> JSVGCanvas check the Batik wiki for how to bring up the SVG DOM:
> >>>
> >>> http://wiki.apache.org/xmlgraphics-batik/BootSvgAndCssDom
> >>>
> >>>
> >>> 
> >>>> thomas.deweese@kodak.com wrote:
> >>>>
> >>>> 
> >>>>> Hi Nazer,
> >>>>>
> >>>>> "Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com> wrote on 
> >>>>> 
> > 08/14/2006 
> > 
> >>>>> 07:29:19 AM:
> >>>>>
> >>>>>
> >>>>>
> >>>>> 
> >>>>>> I use batik to operate SVG at runtime. 
> >>>>>>
> >>>>>> The question is how can I get SVGOMGElement coordinates when 
> >>>>>> 
> > walking 
> > 
> >>> DOM
> >>>
> >>> 
> >>>>>> tree of the SVG document?
> >>>>>>
> >>>>>>
> >>>>>> 
> >>>>>    You should look at the SVG DOM.  In particular the 'getBBox' 
> >>>>>
> >>>>> 
> >>> method.
> >>>
> >>> 
> >>>>> There are also methods get 'getIntersectionList' that could be 
> >>>>> 
> > useful.
> > 
> >>>>>
> >>>>>
> >>>>> 
> >>>>>> The reason I'm asking such a thing it that requirements are to 
> >>>>>>
> >>>>>> 
> >>> display
> >>>
> >>> 
> >>>>>> info popup near named elements of SVG. If I had coordinates of 
such 
> >>>>>> 
> >
> > 
> >>> an
> >>>
> >>> 
> >>>>>> element I could use DOM to add new element to the tree with 
> >>>>>> 
> > computed
> > 
> >>>>>> coordinates for correct positioning of the info popup.
> >>>>>>
> >>>>>>
> >>>>>> 
> >>>>>    This is typically done with mouse over/out event handlers. This 

> >>>>> allows you to receive a DOM event when the mouse enters/exits a 
> >>>>>
> >>>>> 
> >>> particular
> >>>
> >>> 
> >>>>> element or group in the SVG document.  If you need the sensitive 
> >>>>> 
> > area 
> > 
> >>> to
> >>>
> >>> 
> >>>>> be larger than the rendered area you can add a hidden element
> >>>>> (visibility="hidden" pointer-events="fill") that can cover the 
> >>>>>
> >>>>> 
> >>> expanded
> >>>
> >>> 
> >>>>> area and tie your event handler to that.
> >>>>>
> >>>>>
> >>>>>
> >>>>> 
> > ---------------------------------------------------------------------
> > 
> >>>>> 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
> > 
> >>>> 
> >>> 
---------------------------------------------------------------------
> >>> 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
> >>
> >> 
> >
> >
> > ---------------------------------------------------------------------
> > 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
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org


Re: SVGOMGElement and coordinates?

Posted by "Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com>.
Thomas, 
the only difference is that I need SVGRect from different element, not 
the rootGN. Like next:

    public static SVGDocument parseSvg(String uri) {
        UserAgent userAgent = new UserAgentAdapter();
        DocumentLoader loader = new DocumentLoader(userAgent);
        SVGDocument doc;
        try {
            doc = (SVGDocument) loader.loadDocument(uri);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
        BridgeContext ctx = new BridgeContext(userAgent, loader);
        ctx.setDynamicState(BridgeContext.DYNAMIC);
        GVTBuilder builder = new GVTBuilder();
        GraphicsNode rootGN = builder.build(ctx, doc);
        loader.dispose();
        return doc;
    }

//this will return null.
    public static SVGRect getSVGRect(SVGLocatable e) {
        return e.getBBox();
    }

thomas.deweese@kodak.com wrote:
> Hi Nazar,
>
> "Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com> wrote on 08/14/2006 
> 09:55:27 AM:
>
>   
>> No I don't use JSVGCanvas. My application is using servlets. Basically I 
>>     
>
>   
>> construct SVGDocument from file and while visiting elements of its DOM 
>> tree I need a coordinate of the element for later use
>>
>> To boot SVG DOM you mean a code like this ?
>>     
>
>    Close but for correct results you need to build it from the root
> of the SVG tree (just like the Wiki page).  You should also only do 
> this once for the whole document right after loading it (not for 
> each element).
>
>   
>>     public static Rectangle2D getBounds2D(Element e) {
>>         UserAgent userAgent = new UserAgentAdapter();
>>         DocumentLoader loader = new DocumentLoader(userAgent);
>>         BridgeContext ctx = new BridgeContext(userAgent, loader);
>>         ctx.setDynamicState(BridgeContext.DYNAMIC);
>>         GVTBuilder builder = new GVTBuilder();
>>         GraphicsNode rootGN = builder.build(ctx, e);
>>         return rootGN.getBounds();
>>
>>     }
>> Note: when visiting an element it is already of type SVGOMGElement, 
>> hence there no need to boot SVG DOM or am I wrong?
>>     
>
>    You need to boot the SVG DOM in all cases, if you want to use it.
>
>   
>> If you look at my code at line last but one, rootGN = builder.build(ctx, 
>>     
>
>   
>> e); it assigns null to rootGN.
>>     
>
>    Right you need to build from root of Document.
>
>   
>>
>> thomas.deweese@kodak.com wrote:
>>     
>>> Hi Nazar,
>>>
>>> "Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com> wrote on 08/14/2006 
>>> 09:16:01 AM:
>>>
>>>
>>>       
>>>> SVGLocatable.getBBox(elem) returns null No javadoc comments are there 
>>>>         
> to 
>   
>>>       
>>>> unveil the reason of such behaviour
>>>>
>>>> Is there the other way to get coordinates of SVGOMGElement ?
>>>>
>>>>         
>>>     How are you using the Document?  Is it in the JSVGCanvas?
>>> Are you trying to call this method before loading the document?
>>>
>>>     For these methods to work you need to boot the SVG DOM.
>>> This normally happens when you load the document in the Canvas
>>> (you may need to set document state to ALWAYS_DYNAMIC on the
>>> canvas before loading the document if there are no obvious dynamic 
>>> features of the document).
>>>
>>>     If you are trying to use these features outside of the
>>> JSVGCanvas check the Batik wiki for how to bring up the SVG DOM:
>>>
>>> http://wiki.apache.org/xmlgraphics-batik/BootSvgAndCssDom
>>>
>>>
>>>       
>>>> thomas.deweese@kodak.com wrote:
>>>>
>>>>         
>>>>> Hi Nazer,
>>>>>
>>>>> "Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com> wrote on 
>>>>>           
> 08/14/2006 
>   
>>>>> 07:29:19 AM:
>>>>>
>>>>>
>>>>>
>>>>>           
>>>>>> I use batik to operate SVG at runtime. 
>>>>>>
>>>>>> The question is how can I get SVGOMGElement coordinates when 
>>>>>>             
> walking 
>   
>>> DOM
>>>
>>>       
>>>>>> tree of the SVG document?
>>>>>>
>>>>>>
>>>>>>             
>>>>>    You should look at the SVG DOM.  In particular the 'getBBox' 
>>>>>
>>>>>           
>>> method.
>>>
>>>       
>>>>> There are also methods get 'getIntersectionList' that could be 
>>>>>           
> useful.
>   
>>>>>
>>>>>
>>>>>           
>>>>>> The reason I'm asking such a thing it that requirements are to 
>>>>>>
>>>>>>             
>>> display
>>>
>>>       
>>>>>> info popup near named elements of SVG. If I had coordinates of such 
>>>>>>             
>
>   
>>> an
>>>
>>>       
>>>>>> element I could use DOM to add new element to the tree with 
>>>>>>             
> computed
>   
>>>>>> coordinates for correct positioning of the info popup.
>>>>>>
>>>>>>
>>>>>>             
>>>>>    This is typically done with mouse over/out event handlers.  This 
>>>>> allows you to receive a DOM event when the mouse enters/exits a 
>>>>>
>>>>>           
>>> particular
>>>
>>>       
>>>>> element or group in the SVG document.  If you need the sensitive 
>>>>>           
> area 
>   
>>> to
>>>
>>>       
>>>>> be larger than the rendered area you can add a hidden element
>>>>> (visibility="hidden" pointer-events="fill") that can cover the 
>>>>>
>>>>>           
>>> expanded
>>>
>>>       
>>>>> area and tie your event handler to that.
>>>>>
>>>>>
>>>>>
>>>>>           
> ---------------------------------------------------------------------
>   
>>>>> 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
>   
>>>>         
>>> ---------------------------------------------------------------------
>>> 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
>>
>>     
>
>
> ---------------------------------------------------------------------
> 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


Re: SVGOMGElement and coordinates?

Posted by th...@kodak.com.
Hi Nazar,

"Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com> wrote on 08/14/2006 
09:55:27 AM:

> No I don't use JSVGCanvas. My application is using servlets. Basically I 

> construct SVGDocument from file and while visiting elements of its DOM 
> tree I need a coordinate of the element for later use
> 
> To boot SVG DOM you mean a code like this ?

   Close but for correct results you need to build it from the root
of the SVG tree (just like the Wiki page).  You should also only do 
this once for the whole document right after loading it (not for 
each element).

>     public static Rectangle2D getBounds2D(Element e) {
>         UserAgent userAgent = new UserAgentAdapter();
>         DocumentLoader loader = new DocumentLoader(userAgent);
>         BridgeContext ctx = new BridgeContext(userAgent, loader);
>         ctx.setDynamicState(BridgeContext.DYNAMIC);
>         GVTBuilder builder = new GVTBuilder();
>         GraphicsNode rootGN = builder.build(ctx, e);
>         return rootGN.getBounds();
> 
>     }
> Note: when visiting an element it is already of type SVGOMGElement, 
> hence there no need to boot SVG DOM or am I wrong?

   You need to boot the SVG DOM in all cases, if you want to use it.

> If you look at my code at line last but one, rootGN = builder.build(ctx, 

> e); it assigns null to rootGN.

   Right you need to build from root of Document.

> 
> 
> 
> thomas.deweese@kodak.com wrote:
> > Hi Nazar,
> >
> > "Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com> wrote on 08/14/2006 
> > 09:16:01 AM:
> >
> > 
> >> SVGLocatable.getBBox(elem) returns null No javadoc comments are there 
to 
> >> 
> >
> > 
> >> unveil the reason of such behaviour
> >>
> >> Is there the other way to get coordinates of SVGOMGElement ?
> >> 
> >
> >     How are you using the Document?  Is it in the JSVGCanvas?
> > Are you trying to call this method before loading the document?
> >
> >     For these methods to work you need to boot the SVG DOM.
> > This normally happens when you load the document in the Canvas
> > (you may need to set document state to ALWAYS_DYNAMIC on the
> > canvas before loading the document if there are no obvious dynamic 
> > features of the document).
> >
> >     If you are trying to use these features outside of the
> > JSVGCanvas check the Batik wiki for how to bring up the SVG DOM:
> >
> > http://wiki.apache.org/xmlgraphics-batik/BootSvgAndCssDom
> >
> > 
> >> thomas.deweese@kodak.com wrote:
> >> 
> >>> Hi Nazer,
> >>>
> >>> "Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com> wrote on 
08/14/2006 
> >>> 07:29:19 AM:
> >>>
> >>>
> >>> 
> >>>> I use batik to operate SVG at runtime. 
> >>>>
> >>>> The question is how can I get SVGOMGElement coordinates when 
walking 
> >>>> 
> > DOM
> > 
> >>>> tree of the SVG document?
> >>>>
> >>>> 
> >>>    You should look at the SVG DOM.  In particular the 'getBBox' 
> >>> 
> > method.
> > 
> >>> There are also methods get 'getIntersectionList' that could be 
useful.
> >>>
> >>>
> >>>
> >>> 
> >>>> The reason I'm asking such a thing it that requirements are to 
> >>>> 
> > display
> > 
> >>>> info popup near named elements of SVG. If I had coordinates of such 

> >>>> 
> > an
> > 
> >>>> element I could use DOM to add new element to the tree with 
computed
> >>>> coordinates for correct positioning of the info popup.
> >>>>
> >>>> 
> >>>    This is typically done with mouse over/out event handlers.  This 
> >>> allows you to receive a DOM event when the mouse enters/exits a 
> >>> 
> > particular
> > 
> >>> element or group in the SVG document.  If you need the sensitive 
area 
> >>> 
> > to
> > 
> >>> be larger than the rendered area you can add a hidden element
> >>> (visibility="hidden" pointer-events="fill") that can cover the 
> >>> 
> > expanded
> > 
> >>> area and tie your event handler to that.
> >>>
> >>>
> >>> 
---------------------------------------------------------------------
> >>> 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
> >>
> >> 
> >
> >
> > ---------------------------------------------------------------------
> > 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
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org


Re: SVGOMGElement and coordinates?

Posted by "Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com>.
No I don't use JSVGCanvas. My application is using servlets. Basically I 
construct SVGDocument from file and while visiting elements of its DOM 
tree I need a coordinate of the element for later use

To boot SVG DOM you mean a code like this ?
    public static Rectangle2D getBounds2D(Element e) {
        UserAgent userAgent = new UserAgentAdapter();
        DocumentLoader loader = new DocumentLoader(userAgent);
        BridgeContext ctx = new BridgeContext(userAgent, loader);
        ctx.setDynamicState(BridgeContext.DYNAMIC);
        GVTBuilder builder = new GVTBuilder();
        GraphicsNode rootGN = builder.build(ctx, e);
        return rootGN.getBounds();

    }
Note: when visiting an element it is already of type SVGOMGElement, 
hence there no need to boot SVG DOM or am I wrong?
If you look at my code at line last but one, rootGN = builder.build(ctx, 
e); it assigns null to rootGN.



thomas.deweese@kodak.com wrote:
> Hi Nazar,
>
> "Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com> wrote on 08/14/2006 
> 09:16:01 AM:
>
>   
>> SVGLocatable.getBBox(elem) returns null No javadoc comments are there to 
>>     
>
>   
>> unveil the reason of such behaviour
>>
>> Is there the other way to get coordinates of SVGOMGElement ?
>>     
>
>     How are you using the Document?  Is it in the JSVGCanvas?
> Are you trying to call this method before loading the document?
>
>     For these methods to work you need to boot the SVG DOM.
> This normally happens when you load the document in the Canvas
> (you may need to set document state to ALWAYS_DYNAMIC on the
> canvas before loading the document if there are no obvious dynamic 
> features of the document).
>
>     If you are trying to use these features outside of the
> JSVGCanvas check the Batik wiki for how to bring up the SVG DOM:
>
> http://wiki.apache.org/xmlgraphics-batik/BootSvgAndCssDom
>
>   
>> thomas.deweese@kodak.com wrote:
>>     
>>> Hi Nazer,
>>>
>>> "Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com> wrote on 08/14/2006 
>>> 07:29:19 AM:
>>>
>>>
>>>       
>>>> I use batik to operate SVG at runtime. 
>>>>
>>>> The question is how can I get SVGOMGElement coordinates when walking 
>>>>         
> DOM
>   
>>>> tree of the SVG document?
>>>>
>>>>         
>>>    You should look at the SVG DOM.  In particular the 'getBBox' 
>>>       
> method.
>   
>>> There are also methods get 'getIntersectionList' that could be useful.
>>>
>>>
>>>
>>>       
>>>> The reason I'm asking such a thing it that requirements are to 
>>>>         
> display
>   
>>>> info popup near named elements of SVG. If I had coordinates of such 
>>>>         
> an
>   
>>>> element I could use DOM to add new element to the tree with computed
>>>> coordinates for correct positioning of the info popup.
>>>>
>>>>         
>>>    This is typically done with mouse over/out event handlers.  This 
>>> allows you to receive a DOM event when the mouse enters/exits a 
>>>       
> particular
>   
>>> element or group in the SVG document.  If you need the sensitive area 
>>>       
> to
>   
>>> be larger than the rendered area you can add a hidden element
>>> (visibility="hidden" pointer-events="fill") that can cover the 
>>>       
> expanded
>   
>>> area and tie your event handler to that.
>>>
>>>
>>> ---------------------------------------------------------------------
>>> 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
>>
>>     
>
>
> ---------------------------------------------------------------------
> 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


Re: SVGOMGElement and coordinates?

Posted by th...@kodak.com.
Hi Nazar,

"Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com> wrote on 08/14/2006 
09:16:01 AM:

> SVGLocatable.getBBox(elem) returns null No javadoc comments are there to 

> unveil the reason of such behaviour
> 
> Is there the other way to get coordinates of SVGOMGElement ?

    How are you using the Document?  Is it in the JSVGCanvas?
Are you trying to call this method before loading the document?

    For these methods to work you need to boot the SVG DOM.
This normally happens when you load the document in the Canvas
(you may need to set document state to ALWAYS_DYNAMIC on the
canvas before loading the document if there are no obvious dynamic 
features of the document).

    If you are trying to use these features outside of the
JSVGCanvas check the Batik wiki for how to bring up the SVG DOM:

http://wiki.apache.org/xmlgraphics-batik/BootSvgAndCssDom

> thomas.deweese@kodak.com wrote:
> > Hi Nazer,
> >
> > "Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com> wrote on 08/14/2006 
> > 07:29:19 AM:
> >
> > 
> >> I use batik to operate SVG at runtime. 
> >>
> >> The question is how can I get SVGOMGElement coordinates when walking 
DOM
> >> tree of the SVG document?
> >> 
> >
> >    You should look at the SVG DOM.  In particular the 'getBBox' 
method.
> > There are also methods get 'getIntersectionList' that could be useful.
> >
> >
> > 
> >> The reason I'm asking such a thing it that requirements are to 
display
> >> info popup near named elements of SVG. If I had coordinates of such 
an
> >> element I could use DOM to add new element to the tree with computed
> >> coordinates for correct positioning of the info popup.
> >> 
> >
> >    This is typically done with mouse over/out event handlers.  This 
> > allows you to receive a DOM event when the mouse enters/exits a 
particular
> > element or group in the SVG document.  If you need the sensitive area 
to
> > be larger than the rendered area you can add a hidden element
> > (visibility="hidden" pointer-events="fill") that can cover the 
expanded
> > area and tie your event handler to that.
> >
> >
> > ---------------------------------------------------------------------
> > 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
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org


Re: SVGOMGElement and coordinates?

Posted by "Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com>.
SVGLocatable.getBBox(elem) returns null No javadoc comments are there to 
unveil the reason of such behaviour

Is there the other way to get coordinates of SVGOMGElement ?


thomas.deweese@kodak.com wrote:
> Hi Nazer,
>
> "Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com> wrote on 08/14/2006 
> 07:29:19 AM:
>
>   
>> I use batik to operate SVG at runtime. 
>>
>> The question is how can I get SVGOMGElement coordinates when walking DOM
>> tree of the SVG document?
>>     
>
>    You should look at the SVG DOM.  In particular the 'getBBox' method.
> There are also methods get 'getIntersectionList' that could be useful.
>
>
>   
>> The reason I'm asking such a thing it that requirements are to display
>> info popup near named elements of SVG. If I had coordinates of such an
>> element I could use DOM to add new element to the tree with computed
>> coordinates for correct positioning of the info popup.
>>     
>
>    This is typically done with mouse over/out event handlers.  This 
> allows you to receive a DOM event when the mouse enters/exits a particular
> element or group in the SVG document.  If you need the sensitive area to
> be larger than the rendered area you can add a hidden element
> (visibility="hidden" pointer-events="fill") that can cover the expanded
> area and tie your event handler to that.
>
>
> ---------------------------------------------------------------------
> 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


Re: SVGOMGElement and coordinates?

Posted by th...@kodak.com.
Hi Nazer,

"Nazar Stasiv (Lohika, Inc)" <ns...@lohika.com> wrote on 08/14/2006 
07:29:19 AM:

> I use batik to operate SVG at runtime. 
> 
> The question is how can I get SVGOMGElement coordinates when walking DOM
> tree of the SVG document?

   You should look at the SVG DOM.  In particular the 'getBBox' method.
There are also methods get 'getIntersectionList' that could be useful.


> The reason I'm asking such a thing it that requirements are to display
> info popup near named elements of SVG. If I had coordinates of such an
> element I could use DOM to add new element to the tree with computed
> coordinates for correct positioning of the info popup.

   This is typically done with mouse over/out event handlers.  This 
allows you to receive a DOM event when the mouse enters/exits a particular
element or group in the SVG document.  If you need the sensitive area to
be larger than the rendered area you can add a hidden element
(visibility="hidden" pointer-events="fill") that can cover the expanded
area and tie your event handler to that.


---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org