You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by bu...@apache.org on 2009/01/28 15:35:11 UTC

DO NOT REPLY [Bug 46618] New: NPE when changing an element during animation

https://issues.apache.org/bugzilla/show_bug.cgi?id=46618

           Summary: NPE when changing an element during animation
           Product: Batik
           Version: 1.8
          Platform: PC
        OS/Version: Windows Server 2003
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Animation engine
        AssignedTo: batik-dev@xmlgraphics.apache.org
        ReportedBy: age@hobba.nl


JDK: 1.6.0_07
Batik: batik-src-09-01-04.zip

When you have an animated element and you change e.g. the border colour you get
a NullPointerException.

SVG file cut:

<rect x="20" y="20" width="100" height="100"
style="stroke:#ffffff;stroke-width:1;" fill="blue" id="hlRect">
    <animate attributeType="CSS" attributeName="opacity" from="1" to="0"
begin="0s;blue_fade_in.end" dur="1s" id="blue_fade_out"/>
    <animate attributeType="CSS" attributeName="opacity" from="0" to="1"
begin="blue_fade_out.end" dur="1s" id="blue_fade_in"/>
</rect>


In this case it's a simple rect but the same will happen when you animate a
group which contains elements on which you perform the action.
When you start the application the animation will run as expected. As soon as
you change e.g. the stroke colour with Java you'll get a NPE.

Java code cut:

svgCanvas.getUpdateManager().getUpdateRunnableQueue().invokeLater(new
Runnable() {
    public void run() {
        SVGDocument svgDoc = svgCanvas.getSVGDocument();
        Element hlElement = svgDoc.getElementById("hlRect");
       
((org.w3c.dom.svg.SVGStylable)hlElement).getStyle().setProperty("stroke",
"deepskyblue", "");
    }
});


NPE:

java.lang.NullPointerException
  at org.apache.batik.anim.timing.TimedElement.addInstanceTime(Unknown Source)
  at org.apache.batik.anim.timing.SyncbaseTimingSpecifier.newInterval(Unknown
Source)
  at org.apache.batik.anim.timing.TimedElement.notifyNewInterval(Unknown
Source)
  at org.apache.batik.anim.timing.TimedElement.selectNewInterval(Unknown
Source)
  at org.apache.batik.anim.timing.TimedElement.sampleAt(Unknown Source)
  at org.apache.batik.anim.timing.TimedDocumentRoot.seekTo(Unknown Source)
  at org.apache.batik.anim.AnimationEngine.tick(Unknown Source)
  at org.apache.batik.bridge.SVGAnimationEngine.access$600(Unknown Source)
  at
org.apache.batik.bridge.SVGAnimationEngine$AnimationTickRunnable.run(Unknown
Source)
  at org.apache.batik.util.RunnableQueue.run(Unknown Source)
  at java.lang.Thread.run(Thread.java:619)


This NPE will be displayed repeatedly.
Let me know if you need any more info.


-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

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


DO NOT REPLY [Bug 46618] NPE when changing an element during animation

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=46618


Age Bosma <ag...@hobba.nl> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |age@hobba.nl
           Severity|normal                      |major




--- Comment #1 from Age Bosma <ag...@hobba.nl>  2009-02-02 03:08:41 PST ---
With the latest nightly (batik-src-09-01-28.zip) I get the same result.

After some additional testing I came to the conclusion that I included the
wrong svg code in the bug report. The issue is caused because of the use of the
'use' element when placed in a 'g' element, referencing the group in the 'use'
element.

Revised code:
<g id="hlGroup">
<rect x="20" y="20" width="100" height="100"
style="stroke:#ffffff;stroke-width:1;" fill="blue" id="hlRect">
    <animate attributeType="CSS" attributeName="opacity" from="1" to="0"
begin="0s;blue_fade_in.end" dur="1s" id="blue_fade_out"/>
    <animate attributeType="CSS" attributeName="opacity" from="0" to="1"
begin="blue_fade_out.end" dur="1s" id="blue_fade_in"/>
</rect>
</g>
<use xlink:href="#hlGroup" transform="translate(0,120)" />

Placing the group in the a 'defs' element makes no difference.

When you refence the 'rect' element in the 'use' element directly instead of
the group, the error does not occur. Though this might just as well be because
of, what appears to be, a different bug. When changing the e.g. the stroke
colour when refencing the 'rect' element directly, the stroke colour of the
'use' element will not change in the first place.


-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

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