Hello,
we have developped a swing application that uses batik as it's main rendering
interface, mainly because it was a vector based application. This application
has an animation button, where, frame after frame, we change the content of the
svg tree, mainly by raplacing a whole subtree. This basicaly look like this
setCurrentFrame(int frame){
SVGElement newChild = getSVG(frame);
element.replaceChild(oldChild,newChild);
oldChild = newChild();
}
called in a loop. The best we achieve is 12fps this way. If we remove the
animated background, we go up to 19fps. It's simplified, the real operation are
done using a Runnable added to the updatequeue of batik, so visual is up to
date.
My problem is that batik recalculates, for newChild, the GVT, which is
obviously needed to display the SVG on the JSVGCanvas. Profiling operation show
most of my time (~80%) is spent in GVT builder. Is there some way to tell batik
to remember "newChild" so that, next time (next loop) i reinsert newChild, it
doesn't need to rebuild the GVT tree but can reuse the previous one?
Do you have any recommandation on how to handle animations with better
performances?
thanks for help
David Delbecq