Hi Sebastian,

Sebastian Queißer <[email protected]> wrote on 02/20/2009 03:20:26 PM:

> Finally I managed it to solve bug #45723. The problem was that in the
> SVGTextPathElementBridge class the startOffset attribute is only read
> via the DOM getAttributeNS method, not by calling getStartOffset from
> SVGOMTextPathElement which returns the updated AnimatableLength object.
> 
> I appended a patch file which also includes my first fix.

   Thanks, I'll try and take a look shortly.

> On Fr, Feb 20, 2009 at 03:28:49 +0100, you wrote:
> > Hi there!
> > 
> > I think I created a possible patch (see the appended file). The 
problem
> > is that the SVGTextElementBridge doesn't catch Attr change events of
> > it's children. With the appended patch it works but I'm not sure if 
it's
> > the right way to do this. Perhaps some expert could check it?
> > 
> > By the way: I really like what you've created. The batik library 
> is fantastic:)
> > 
> > Best regards,
> > Sebastian
> > 
> > On Fr, Feb 20, 2009 at 02:15:00 +0100, you wrote:
> > > Hello!
> > > 
> > > I'm using batik1.7 on linux with sun java 1.6.0.12 and encountered 
the
> > > following problem:
> > > 
> > > As a simple testcase I'll use the SVG
> > > http://www.w3.org/TR/SVG/images/text/toap01.svg
> > > and add an id to the textPath in line 17:
> > > <textPath id="test" xlink:href="#MyPath">
> > > 
> > > This file should be displayed in a JSVGCanvas and the textPath tag
> > > should be dynamically changed from Java the following way:
> > > 
> > > ------------------------------------------
> > > 
> > > svgCanvas.getUpdateManager().getUpdateRunnableQueue().
> > > invokeLater(new Runnable()
> > > {
> > >     public void run()
> > >     {
> > >    SVGSVGElement svg = svgCanvas.getSVGDocument().getRootElement();
> > >    SVGTextPathElement elm = (SVGTextPathElement)svg.
> getElementById("test");
> > >    elm.setAttributeNS(null, "startOffset", "50%");
> > >     }
> > > });
> > > 
> > > ------------------------------------------
> > > 
> > > The problem is that the JSVGCanvas doesn't update the display. If I
> > > replace "startOffset" with for example "font-size" it works 
perfectly.
> > > If the whole document is rerendered (i.e. calling "setSVGDocument"
> > > again) the result is also correct. Therefore I think there must be 
> > > something wrong with the handling of DOM changes to the 
"startOffset"
> > > attribute. 
> > > 
> > > Moreover this bug seems to be similar to bug #45723 (startOffset
> > > attribute of textPath cannot be animated).
> > > 
> > > To make it easier for you to reproduce the bug I've appended the SVG 
and
> > > a small application based on an example from the batik homepage. In 
this
> > > application you can load the SVG and then press the Start! button to
> > > execute the code above.
> > > 
> > > Does it work for you?
> > > 
> > > Kind regards,
> > > Sebastian
> > 
> > 
> > > 
---------------------------------------------------------------------
> > > To unsubscribe, e-mail: 
[email protected]
> > > For additional commands, e-mail: 
[email protected]
> 
> > Index: sources/org/apache/batik/bridge/SVGTextElementBridge.java
> > ===================================================================
> > --- sources/org/apache/batik/bridge/SVGTextElementBridge.java 
> (Revision 746227)
> > +++ sources/org/apache/batik/bridge/SVGTextElementBridge.java 
> (Arbeitskopie)
> > @@ -550,6 +550,15 @@
> >          }
> >      }
> > 
> > +    public void handleDOMAttrModifiedEvent(MutationEvent evt) {
> > +        Node childNode = (Node)evt.getTarget();
> > +        //if the parent is displayed, then discard the layout.
> > +        if (isParentDisplayed(childNode)) {
> > +            laidoutText = null;
> > +            computeLaidoutText(ctx, e, getTextNode());
> > +        }
> > +    }
> > +
> >      /**
> >       * Invoked when an MutationEvent of type 'DOMNodeRemoved' is 
fired.
> >       */
> > @@ -2157,7 +2166,7 @@
> >           * Invoked when an MutationEvent of type 
> 'DOMAttrModified' is fired.
> >           */
> >          public void handleDOMAttrModifiedEvent(MutationEvent evt) {
> > -            //nothing to do
> > +            textBridge.handleDOMAttrModifiedEvent(evt); 
> >          }
> > 
> >          /**
> > 
> 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: 
[email protected]
> [attachment "batik_startOffset_dynamic.patch.gz" deleted by Thomas 
> E. DeWeese/449433/EKC] 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]

Reply via email to