RE: SVG update performances over X11 export display

2009-12-01 Thread HODAC, Olivier
Hello,

I have very bad performances using batik to display and update a SVG over a X11 
export display. Is there any documentation to understand the policy of batik to 
do the repaint?

When I do a setAttribute style, for example, does batik repaints only the 
necessary part of the display (the rectangle surrounding the element)?
If I have several layers, does batik repaints each one?
Etc...

-Message d'origine-
De : HODAC, Olivier 
Envoyé : lundi 30 novembre 2009 16:24
À : batik-users@xmlgraphics.apache.org
Objet : RE: SVG update performances over X11 export display

Great!

I am watching the sources of Batik, but I cannot get the behaviour:

When I suspendRedraw, my invokeLater calls piles up the runnables in the 
runnableQueue. But when I release (unsuspend), what happends?
I suppose the update manager unpiles the runnables. Does the repaint made only 
once when the queue is empty? It is not clear...

-Message d'origine-
De : Helder Magalhães [mailto:helder.magalh...@gmail.com] 
Envoyé : lundi 30 novembre 2009 14:53
À : batik-users@xmlgraphics.apache.org
Objet : Re: SVG update performances over X11 export display

Hi Olivier,


 Is there a way to do this with the batik framework:

 beginBatchModifications()
 thread1 - getUpdateRunnableQueue().invokeLater(runnable1)
 thread2 - getUpdateRunnableQueue().invokeLater(runnable2)
 thread3 - getUpdateRunnableQueue().invokeLater(runnable3)
 thread2 - getUpdateRunnableQueue().invokeLater(runnable4)
 thread1 - getUpdateRunnableQueue().invokeLater(runnable5)
 endBatch()


 so that I will not have to manage my synchronized queue of runnable and 
 ensure the repaint is performed by the endBatch?

Well, SVG has the (un)suspendRedraw [1] methods, which Batik
implements [2]. ;-)


Hope this helps,
 Helder


[1] http://www.w3.org/TR/SVG/struct.html#DOMInterfaces
[2] 
http://xmlgraphics.apache.org/batik/javadoc/org/apache/batik/dom/svg/SVGSVGContext.html

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


This mail has originated outside your organization, either from an external 
partner or the Global Internet.
Keep this in mind if you answer this message.




The information in this e-mail is confidential. The contents may not be 
disclosed or used by anyone other than the addressee. Access to this e-mail by 
anyone else is unauthorised.
If you are not the intended recipient, please notify Airbus immediately and 
delete this e-mail.
Airbus cannot accept any responsibility for the accuracy or completeness of 
this e-mail as it has been sent over public networks. If you have any concerns 
over the content of this message or its Accuracy or Integrity, please contact 
Airbus immediately.
All outgoing e-mails from Airbus are checked using regularly updated virus 
scanning software but you should take whatever measures you deem to be 
appropriate to ensure that this message and any attachments are virus free.


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


This mail has originated outside your organization, either from an external 
partner or the Global Internet.
Keep this in mind if you answer this message.




The information in this e-mail is confidential. The contents may not be 
disclosed or used by anyone other than the addressee. Access to this e-mail by 
anyone else is unauthorised.
If you are not the intended recipient, please notify Airbus immediately and 
delete this e-mail.
Airbus cannot accept any responsibility for the accuracy or completeness of 
this e-mail as it has been sent over public networks. If you have any concerns 
over the content of this message or its Accuracy or Integrity, please contact 
Airbus immediately.
All outgoing e-mails from Airbus are checked using regularly updated virus 
scanning software but you should take whatever measures you deem to be 
appropriate to ensure that this message and any attachments are virus free.


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



Re: SVG update performances over X11 export display

2009-12-01 Thread Helder Magalhães
Hi Olivier,


 I have very bad performances using batik to display and update a SVG over a 
 X11 export display.

I don't know about the internals of X11 export display, but I can
imagine that would be close to Remote Desktop and/or VNC, possibly
more efficient. But given that Java ultimately deals with buffered
images(bitmaps) I guess the X11 export's potential efficiency,
regarding vector operations, is kinda chopped down (please correct me
if I'm wrong!)... It might be possible to implement Batik rendering
directly using X11 primitive operations, which would then take
advantage of the X11 export display, but that would probably be a
crazy project (in terms of the amount of work and required Batik
refactoring)! :-D


 Is there any documentation to understand the policy of batik to do the 
 repaint?

You may take a look at the Batik architecture [1], but that's only a
starting point. The repaint internals are likely within the GVT
module, but I'm not sure if, else than the Javadoc (and the source
code itself, naturally), more documentation is available...


 When I do a setAttribute style, for example, does batik repaints only the 
 necessary
 part of the display (the rectangle surrounding the element)?

That should be the case.


 If I have several layers, does batik repaints each one?

I guess not. As far as I know, the repaint is made by areas so, if you
update the several layers in a single operation -- or using a batch
operation with the already stated (un)suspendRedraw -- than a single
repaint would be expected.


Thomas is the GVT expert [2] so he may be able to shed some light
here; as for me, this is hitting the limit of my current Batik
internals knowledge, so I really doubt I can provide much more useful
information.


As a side note, why not place some debug output in the repaint classes
and check what Batik is doing for yourself...? ;-)


Hope this helps,
 Helder


[1] http://xmlgraphics.apache.org/batik/using/architecture.html
[2] http://xmlgraphics.apache.org/batik/contributors.html#expertise

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



Re: Dynamic addition of scripts to SVG in Batik

2009-12-01 Thread thomas . deweese
Hi Tanul,

Tanul smart.p...@gmail.com wrote on 11/24/2009 01:55:07 PM:

 I am trying to update the ecma script in the SVG document at runtime. 
i.e.
 the content of the script/script tag is updated during the course of
 execution of the application.
 
 Even after updating/adding the script tag, the updated script is not
 available for execution.

I'm not sure we support 'updating' but if you add a new script
element Batik should execute the code it contains.

 Is it possible to update the scripts dynamically using batik? 

I have done it in the past.  If you can produce a stand alone
example of the problem it might help figure out what the problem is.


RE: SVG update performances over X11 export display

2009-12-01 Thread thomas . deweese
Hi HODAC,

HODAC, Olivier olivier.ho...@airbus.com wrote on 11/30/2009 10:24:00 
AM:

 When I suspendRedraw, my invokeLater calls piles up the runnables in
 the runnableQueue.

   This sounds like you are suspending the RunnableQueue not
suspending Redraw.  When redraws are suspended the runnables should
run as normal but the repaint operation should be skipped (dirty
regions will accumulate).

 But when I release (unsuspend), what happends?
 I suppose the update manager unpiles the runnables. Does the repaint
 made only once when the queue is empty? It is not clear...

   When many runnables are submitted at once the UpdateManager
will not repaint after every one but will repaint fairly frequently
(~50FPS).  This behavior is controlled by the MIN_REPAINT_TIME in
the UpdateManager which you can set with the property:
 org.apache.batik.min_repaint_time

That said if you can 'logically' group the updates into sets
then suspending redraw and re-enabling it is probably better.

 -Message d'origine-
 De : Helder Magalhães [mailto:helder.magalh...@gmail.com] 
 Envoyé : lundi 30 novembre 2009 14:53
 À : batik-users@xmlgraphics.apache.org
 Objet : Re: SVG update performances over X11 export display
 
 Hi Olivier,
 
 
  Is there a way to do this with the batik framework:
 
  beginBatchModifications()
  thread1 - getUpdateRunnableQueue().invokeLater(runnable1)
  thread2 - getUpdateRunnableQueue().invokeLater(runnable2)
  thread3 - getUpdateRunnableQueue().invokeLater(runnable3)
  thread2 - getUpdateRunnableQueue().invokeLater(runnable4)
  thread1 - getUpdateRunnableQueue().invokeLater(runnable5)
  endBatch()
 
 
  so that I will not have to manage my synchronized queue of 
 runnable and ensure the repaint is performed by the endBatch?
 
 Well, SVG has the (un)suspendRedraw [1] methods, which Batik
 implements [2]. ;-)
 
 
 Hope this helps,
  Helder
 
 
 [1] http://www.w3.org/TR/SVG/struct.html#DOMInterfaces
 [2] http://xmlgraphics.apache.org/batik/javadoc/org/apache/batik/
 dom/svg/SVGSVGContext.html
 
 -
 To unsubscribe, e-mail: batik-users-unsubscr...@xmlgraphics.apache.org
 For additional commands, e-mail: batik-users-h...@xmlgraphics.apache.org
 
 
 This mail has originated outside your organization, either from an 
 external partner or the Global Internet.
 Keep this in mind if you answer this message.
 
 
 
 
 The information in this e-mail is confidential. The contents may not
 be disclosed or used by anyone other than the addressee. Access to 
 this e-mail by anyone else is unauthorised.
 If you are not the intended recipient, please notify Airbus 
 immediately and delete this e-mail.
 Airbus cannot accept any responsibility for the accuracy or 
 completeness of this e-mail as it has been sent over public 
 networks. If you have any concerns over the content of this message 
 or its Accuracy or Integrity, please contact Airbus immediately.
 All outgoing e-mails from Airbus are checked using regularly updated
 virus scanning software but you should take whatever measures you 
 deem to be appropriate to ensure that this message and any 
 attachments are virus free.
 
 
 -
 To unsubscribe, e-mail: batik-users-unsubscr...@xmlgraphics.apache.org
 For additional commands, e-mail: batik-users-h...@xmlgraphics.apache.org
 



RE: SVG update performances over X11 export display

2009-12-01 Thread HODAC, Olivier
The double buffering trick seems to be a good lead. By giving me the source 
classes, do you mean that I will have to modify the batik source code to turn 
off double buffering?

 

De : thomas.dewe...@kodak.com [mailto:thomas.dewe...@kodak.com] 
Envoyé : mardi 1 décembre 2009 12:27
À : batik-users@xmlgraphics.apache.org
Cc : batik-users@xmlgraphics.apache.org
Objet : RE: SVG update performances over X11 export display

 

Hi Olivier, 

HODAC, Olivier olivier.ho...@airbus.com wrote on 12/01/2009 05:18:19 AM:

 I have very bad performances using batik to display and update a SVG
 over a X11 export display. Is there any documentation to understand 
 the policy of batik to do the repaint?

No, aside from the source code. 

 When I do a setAttribute style, for example, does batik repaints 
 only the necessary part of the display (the rectangle surrounding 
 the element)?

   Batik only updates the parts of the canvas that needs updating. 

 If I have several layers, does batik repaints each one?

The question is a bit unclear.  When Batik renders a rectangle it 
must repaint everything that intersects that rectangle - so if multiple 
'layers' intersect that rectangle then they will all be repainted, within 
that rectangle.  In the end Batik only generates one update region for 
swing. 

One thing that occurs to me that might be the cause of poor performance 
is the double buffering that Batik does.  It's possible that the JVM 
ends up sending the entire offscreen buffer to the client.  One thing 
that might help with that would be to try turning off double buffering in 
the Canvas. 

The code that renders the Canvas is in batik.swing.gvt.JGVTComponent, 
the code that generates the swing updates is in batik.swing.svg.JSVGComponent 
(mostly updateCompleted callback). 

I hope that helps. 

 -Message d'origine-
 De : HODAC, Olivier 
 Envoyé : lundi 30 novembre 2009 16:24
 À : batik-users@xmlgraphics.apache.org
 Objet : RE: SVG update performances over X11 export display
 
 Great!
 
 I am watching the sources of Batik, but I cannot get the behaviour:
 
 When I suspendRedraw, my invokeLater calls piles up the runnables in
 the runnableQueue. But when I release (unsuspend), what happends?
 I suppose the update manager unpiles the runnables. Does the repaint
 made only once when the queue is empty? It is not clear...
 
 -Message d'origine-
 De : Helder Magalhães [mailto:helder.magalh...@gmail.com 
 mailto:helder.magalh...@gmail.com ] 
 Envoyé : lundi 30 novembre 2009 14:53
 À : batik-users@xmlgraphics.apache.org
 Objet : Re: SVG update performances over X11 export display
 
 Hi Olivier,
 
 
  Is there a way to do this with the batik framework:
 
  beginBatchModifications()
  thread1 - getUpdateRunnableQueue().invokeLater(runnable1)
  thread2 - getUpdateRunnableQueue().invokeLater(runnable2)
  thread3 - getUpdateRunnableQueue().invokeLater(runnable3)
  thread2 - getUpdateRunnableQueue().invokeLater(runnable4)
  thread1 - getUpdateRunnableQueue().invokeLater(runnable5)
  endBatch()
 
 
  so that I will not have to manage my synchronized queue of 
 runnable and ensure the repaint is performed by the endBatch?
 
 Well, SVG has the (un)suspendRedraw [1] methods, which Batik
 implements [2]. ;-)
 
 
 Hope this helps,
  Helder
 
 
 [1] http://www.w3.org/TR/SVG/struct.html#DOMInterfaces 
 http://www.w3.org/TR/SVG/struct.html#DOMInterfaces 
 [2] http://xmlgraphics.apache.org/batik/javadoc/org/apache/batik/ 
 http://xmlgraphics.apache.org/batik/javadoc/org/apache/batik/ 
 dom/svg/SVGSVGContext.html
 
 -
 To unsubscribe, e-mail: batik-users-unsubscr...@xmlgraphics.apache.org
 For additional commands, e-mail: batik-users-h...@xmlgraphics.apache.org
 
 
 This mail has originated outside your organization, either from an 
 external partner or the Global Internet.
 Keep this in mind if you answer this message.
 
 
 
 
 The information in this e-mail is confidential. The contents may not
 be disclosed or used by anyone other than the addressee. Access to 
 this e-mail by anyone else is unauthorised.
 If you are not the intended recipient, please notify Airbus 
 immediately and delete this e-mail.
 Airbus cannot accept any responsibility for the accuracy or 
 completeness of this e-mail as it has been sent over public 
 networks. If you have any concerns over the content of this message 
 or its Accuracy or Integrity, please contact Airbus immediately.
 All outgoing e-mails from Airbus are checked using regularly updated
 virus scanning software but you should take whatever measures you 
 deem to be appropriate to ensure that this message and any 
 attachments are virus free.
 
 
 -
 To unsubscribe, e-mail: batik-users-unsubscr...@xmlgraphics.apache.org
 For additional commands, e-mail: batik-users-h...@xmlgraphics.apache.org
 
 
 This mail has originated outside 

RE: SVG update performances over X11 export display

2009-12-01 Thread HODAC, Olivier
Do you mean that if I set org.apache.batik.min_repaint_time=100ms (10 points a 
sec, this is my requirement) and I call the invokeLater with higher 
frequency(say 50ms), batik will pile up the runnables in the queue and poll 
them 10 times a second?

 

To better understand, in my example, the costfull redraw will be trigged each 
100ms and will process 2 runnables each trig?

 

Doing this, I will not have to implement the (un)suspensRedraw, is that true?

 

De : thomas.dewe...@kodak.com [mailto:thomas.dewe...@kodak.com] 
Envoyé : mardi 1 décembre 2009 12:09
À : batik-users@xmlgraphics.apache.org
Cc : batik-users@xmlgraphics.apache.org
Objet : RE: SVG update performances over X11 export display

 

Hi HODAC, 

HODAC, Olivier olivier.ho...@airbus.com wrote on 11/30/2009 10:24:00 AM:

 When I suspendRedraw, my invokeLater calls piles up the runnables in
 the runnableQueue. 

   This sounds like you are suspending the RunnableQueue not 
suspending Redraw.  When redraws are suspended the runnables should 
run as normal but the repaint operation should be skipped (dirty 
regions will accumulate). 

 But when I release (unsuspend), what happends?
 I suppose the update manager unpiles the runnables. Does the repaint
 made only once when the queue is empty? It is not clear...

   When many runnables are submitted at once the UpdateManager 
will not repaint after every one but will repaint fairly frequently 
(~50FPS).  This behavior is controlled by the MIN_REPAINT_TIME in 
the UpdateManager which you can set with the property: 
 org.apache.batik.min_repaint_time 

That said if you can 'logically' group the updates into sets 
then suspending redraw and re-enabling it is probably better. 

 -Message d'origine-
 De : Helder Magalhães [mailto:helder.magalh...@gmail.com 
 mailto:helder.magalh...@gmail.com ] 
 Envoyé : lundi 30 novembre 2009 14:53
 À : batik-users@xmlgraphics.apache.org
 Objet : Re: SVG update performances over X11 export display
 
 Hi Olivier,
 
 
  Is there a way to do this with the batik framework:
 
  beginBatchModifications()
  thread1 - getUpdateRunnableQueue().invokeLater(runnable1)
  thread2 - getUpdateRunnableQueue().invokeLater(runnable2)
  thread3 - getUpdateRunnableQueue().invokeLater(runnable3)
  thread2 - getUpdateRunnableQueue().invokeLater(runnable4)
  thread1 - getUpdateRunnableQueue().invokeLater(runnable5)
  endBatch()
 
 
  so that I will not have to manage my synchronized queue of 
 runnable and ensure the repaint is performed by the endBatch?
 
 Well, SVG has the (un)suspendRedraw [1] methods, which Batik
 implements [2]. ;-)
 
 
 Hope this helps,
  Helder
 
 
 [1] http://www.w3.org/TR/SVG/struct.html#DOMInterfaces 
 http://www.w3.org/TR/SVG/struct.html#DOMInterfaces 
 [2] http://xmlgraphics.apache.org/batik/javadoc/org/apache/batik/ 
 http://xmlgraphics.apache.org/batik/javadoc/org/apache/batik/ 
 dom/svg/SVGSVGContext.html
 
 -
 To unsubscribe, e-mail: batik-users-unsubscr...@xmlgraphics.apache.org
 For additional commands, e-mail: batik-users-h...@xmlgraphics.apache.org
 
 
 This mail has originated outside your organization, either from an 
 external partner or the Global Internet.
 Keep this in mind if you answer this message.
 
 
 
 
 The information in this e-mail is confidential. The contents may not
 be disclosed or used by anyone other than the addressee. Access to 
 this e-mail by anyone else is unauthorised.
 If you are not the intended recipient, please notify Airbus 
 immediately and delete this e-mail.
 Airbus cannot accept any responsibility for the accuracy or 
 completeness of this e-mail as it has been sent over public 
 networks. If you have any concerns over the content of this message 
 or its Accuracy or Integrity, please contact Airbus immediately.
 All outgoing e-mails from Airbus are checked using regularly updated
 virus scanning software but you should take whatever measures you 
 deem to be appropriate to ensure that this message and any 
 attachments are virus free.
 
 
 -
 To unsubscribe, e-mail: batik-users-unsubscr...@xmlgraphics.apache.org
 For additional commands, e-mail: batik-users-h...@xmlgraphics.apache.org
 

This mail has originated outside your organization, either from an external 
partner or the Global Internet.
Keep this in mind if you answer this message.
 

The information in this e-mail is confidential. The contents may not be 
disclosed or used by anyone other than the addressee. Access to this e-mail by 
anyone else is unauthorised.
If you are not the intended recipient, please notify Airbus immediately and 
delete this e-mail.
Airbus cannot accept any responsibility for the accuracy or completeness of 
this e-mail as it has been sent over public networks. If you have any concerns 
over the content of this message or its Accuracy or Integrity, please contact 
Airbus 

RE: SVG update performances over X11 export display

2009-12-01 Thread HODAC, Olivier
Well, first feedback disabling the double buffering : ugly!

 

  
javax.swing.RepaintManager.currentManager(null).setDoubleBufferingEnabled(false);

 

In display local or export mode, The canvas flikrs and beautiful white rects 
quickly appears. It actually demonstrates that batik updates only the necessary 
parts, as the white rects are over the regions to repaint.

 

I am wondering if JAVA is a good solution since I will export the display. Do 
you know an other way to export the display of several linux stations on the 
same monitor?

 

I have several hosts that will compute the canvas, and my user needs to have 
the different canvas on the same screen (side by side or on top of each other)

 

De : thomas.dewe...@kodak.com [mailto:thomas.dewe...@kodak.com] 
Envoyé : mardi 1 décembre 2009 12:27
À : batik-users@xmlgraphics.apache.org
Cc : batik-users@xmlgraphics.apache.org
Objet : RE: SVG update performances over X11 export display

 

Hi Olivier, 

HODAC, Olivier olivier.ho...@airbus.com wrote on 12/01/2009 05:18:19 AM:

 I have very bad performances using batik to display and update a SVG
 over a X11 export display. Is there any documentation to understand 
 the policy of batik to do the repaint?

No, aside from the source code. 

 When I do a setAttribute style, for example, does batik repaints 
 only the necessary part of the display (the rectangle surrounding 
 the element)?

   Batik only updates the parts of the canvas that needs updating. 

 If I have several layers, does batik repaints each one?

The question is a bit unclear.  When Batik renders a rectangle it 
must repaint everything that intersects that rectangle - so if multiple 
'layers' intersect that rectangle then they will all be repainted, within 
that rectangle.  In the end Batik only generates one update region for 
swing. 

One thing that occurs to me that might be the cause of poor performance 
is the double buffering that Batik does.  It's possible that the JVM 
ends up sending the entire offscreen buffer to the client.  One thing 
that might help with that would be to try turning off double buffering in 
the Canvas. 

The code that renders the Canvas is in batik.swing.gvt.JGVTComponent, 
the code that generates the swing updates is in batik.swing.svg.JSVGComponent 
(mostly updateCompleted callback). 

I hope that helps. 

 -Message d'origine-
 De : HODAC, Olivier 
 Envoyé : lundi 30 novembre 2009 16:24
 À : batik-users@xmlgraphics.apache.org
 Objet : RE: SVG update performances over X11 export display
 
 Great!
 
 I am watching the sources of Batik, but I cannot get the behaviour:
 
 When I suspendRedraw, my invokeLater calls piles up the runnables in
 the runnableQueue. But when I release (unsuspend), what happends?
 I suppose the update manager unpiles the runnables. Does the repaint
 made only once when the queue is empty? It is not clear...
 
 -Message d'origine-
 De : Helder Magalhães [mailto:helder.magalh...@gmail.com 
 mailto:helder.magalh...@gmail.com ] 
 Envoyé : lundi 30 novembre 2009 14:53
 À : batik-users@xmlgraphics.apache.org
 Objet : Re: SVG update performances over X11 export display
 
 Hi Olivier,
 
 
  Is there a way to do this with the batik framework:
 
  beginBatchModifications()
  thread1 - getUpdateRunnableQueue().invokeLater(runnable1)
  thread2 - getUpdateRunnableQueue().invokeLater(runnable2)
  thread3 - getUpdateRunnableQueue().invokeLater(runnable3)
  thread2 - getUpdateRunnableQueue().invokeLater(runnable4)
  thread1 - getUpdateRunnableQueue().invokeLater(runnable5)
  endBatch()
 
 
  so that I will not have to manage my synchronized queue of 
 runnable and ensure the repaint is performed by the endBatch?
 
 Well, SVG has the (un)suspendRedraw [1] methods, which Batik
 implements [2]. ;-)
 
 
 Hope this helps,
  Helder
 
 
 [1] http://www.w3.org/TR/SVG/struct.html#DOMInterfaces 
 http://www.w3.org/TR/SVG/struct.html#DOMInterfaces 
 [2] http://xmlgraphics.apache.org/batik/javadoc/org/apache/batik/ 
 http://xmlgraphics.apache.org/batik/javadoc/org/apache/batik/ 
 dom/svg/SVGSVGContext.html
 
 -
 To unsubscribe, e-mail: batik-users-unsubscr...@xmlgraphics.apache.org
 For additional commands, e-mail: batik-users-h...@xmlgraphics.apache.org
 
 
 This mail has originated outside your organization, either from an 
 external partner or the Global Internet.
 Keep this in mind if you answer this message.
 
 
 
 
 The information in this e-mail is confidential. The contents may not
 be disclosed or used by anyone other than the addressee. Access to 
 this e-mail by anyone else is unauthorised.
 If you are not the intended recipient, please notify Airbus 
 immediately and delete this e-mail.
 Airbus cannot accept any responsibility for the accuracy or 
 completeness of this e-mail as it has been sent over public 
 networks. If you have any concerns over the content of this message 
 or its Accuracy 

RE: SVG update performances over X11 export display

2009-12-01 Thread thomas . deweese
Hi Olivier,

HODAC, Olivier olivier.ho...@airbus.com wrote on 12/01/2009 08:23:17 
AM:

 The double buffering trick seems to be a good lead. By giving me the
 source classes, do you mean that I will have to modify the batik 
 source code to turn off double buffering?

   You do not need to modify the code to turn off double buffering.
You can use JSVGCanvas.setDoubleBufferedRendering(false) - note that
this is quite different from turning off Swing's double buffering
(as you were doing in a different message).

   The real reason I pointed you at the code was because I give this
a small chance to fix your problem.  So you may need to play with
the code to discover a better fix.



 De : thomas.dewe...@kodak.com [mailto:thomas.dewe...@kodak.com] 
 Envoyé : mardi 1 décembre 2009 12:27
 À : batik-users@xmlgraphics.apache.org
 Cc : batik-users@xmlgraphics.apache.org
 Objet : RE: SVG update performances over X11 export display
 
 Hi Olivier, 
 
 HODAC, Olivier olivier.ho...@airbus.com wrote on 12/01/2009 05:18:19 
AM:
 
  I have very bad performances using batik to display and update a SVG
  over a X11 export display. Is there any documentation to understand 
  the policy of batik to do the repaint?
 
 No, aside from the source code. 
 
  When I do a setAttribute style, for example, does batik repaints 
  only the necessary part of the display (the rectangle surrounding 
  the element)?
 
Batik only updates the parts of the canvas that needs updating. 
 
  If I have several layers, does batik repaints each one?
 
 The question is a bit unclear.  When Batik renders a rectangle it 
 must repaint everything that intersects that rectangle - so if multiple 
 'layers' intersect that rectangle then they will all be repainted, 
within 
 that rectangle.  In the end Batik only generates one update region for 
 swing. 
 
 One thing that occurs to me that might be the cause of poor 
performance 
 is the double buffering that Batik does.  It's possible that the JVM 
 ends up sending the entire offscreen buffer to the client.  One thing 
 that might help with that would be to try turning off double buffering 
in 
 the Canvas. 
 
 The code that renders the Canvas is in 
batik.swing.gvt.JGVTComponent, 
 the code that generates the swing updates is in 
batik.swing.svg.JSVGComponent 
 (mostly updateCompleted callback). 
 
 I hope that helps. 
 
  -Message d'origine-
  De : HODAC, Olivier 
  Envoyé : lundi 30 novembre 2009 16:24
  À : batik-users@xmlgraphics.apache.org
  Objet : RE: SVG update performances over X11 export display
  
  Great!
  
  I am watching the sources of Batik, but I cannot get the behaviour:
  
  When I suspendRedraw, my invokeLater calls piles up the runnables in
  the runnableQueue. But when I release (unsuspend), what happends?
  I suppose the update manager unpiles the runnables. Does the repaint
  made only once when the queue is empty? It is not clear...
  
  -Message d'origine-
  De : Helder Magalhães [mailto:helder.magalh...@gmail.com] 
  Envoyé : lundi 30 novembre 2009 14:53
  À : batik-users@xmlgraphics.apache.org
  Objet : Re: SVG update performances over X11 export display
  
  Hi Olivier,
  
  
   Is there a way to do this with the batik framework:
  
   beginBatchModifications()
   thread1 - getUpdateRunnableQueue().invokeLater(runnable1)
   thread2 - getUpdateRunnableQueue().invokeLater(runnable2)
   thread3 - getUpdateRunnableQueue().invokeLater(runnable3)
   thread2 - getUpdateRunnableQueue().invokeLater(runnable4)
   thread1 - getUpdateRunnableQueue().invokeLater(runnable5)
   endBatch()
  
  
   so that I will not have to manage my synchronized queue of 
  runnable and ensure the repaint is performed by the endBatch?
  
  Well, SVG has the (un)suspendRedraw [1] methods, which Batik
  implements [2]. ;-)
  
  
  Hope this helps,
   Helder
  
  
  [1] http://www.w3.org/TR/SVG/struct.html#DOMInterfaces
  [2] http://xmlgraphics.apache.org/batik/javadoc/org/apache/batik/
  dom/svg/SVGSVGContext.html
  
  -
  To unsubscribe, e-mail: batik-users-unsubscr...@xmlgraphics.apache.org
  For additional commands, e-mail: 
batik-users-h...@xmlgraphics.apache.org
  
  
  This mail has originated outside your organization, either from an 
  external partner or the Global Internet.
  Keep this in mind if you answer this message.
  
  
  
  
  The information in this e-mail is confidential. The contents may not
  be disclosed or used by anyone other than the addressee. Access to 
  this e-mail by anyone else is unauthorised.
  If you are not the intended recipient, please notify Airbus 
  immediately and delete this e-mail.
  Airbus cannot accept any responsibility for the accuracy or 
  completeness of this e-mail as it has been sent over public 
  networks. If you have any concerns over the content of this message 
  or its Accuracy or Integrity, please contact Airbus immediately.
  All outgoing 

RE: SVG update performances over X11 export display

2009-12-01 Thread thomas . deweese
Hi Olivier,

HODAC, Olivier olivier.ho...@airbus.com wrote on 12/01/2009 08:28:55 
AM:

 Do you mean that if I set org.apache.batik.min_repaint_time=100ms 
 (10 points a sec, this is my requirement) and I call the invokeLater
 with higher frequency(say 50ms), batik will pile up the runnables in
 the queue and poll them 10 times a second?

Sort of, but not quite.

 To better understand, in my example, the costfull redraw will be 
 trigged each 100ms and will process 2 runnables each trig?

Probably not.  The basic logic is as follows.
When a runnable is completed it checks if there is another runnable
ready to run.  If there isn't a runnable to run it updates the canvas.
If there is a runnable to run it checks how out of date the canvas
is, if it is greater than min repaint time then it will update the
canvas otherwise it will run the pending runnable.

 Doing this, I will not have to implement the (un)suspensRedraw, is that 
true?

Probably not, since I suspect that when the first runnable completes
there won't be another runnable waiting in the queue, so the update
manager will trigger the update.

 
 De : thomas.dewe...@kodak.com [mailto:thomas.dewe...@kodak.com] 
 Envoyé : mardi 1 décembre 2009 12:09
 À : batik-users@xmlgraphics.apache.org
 Cc : batik-users@xmlgraphics.apache.org
 Objet : RE: SVG update performances over X11 export display
 
 Hi HODAC, 
 
 HODAC, Olivier olivier.ho...@airbus.com wrote on 11/30/2009 10:24:00 
AM:
 
  When I suspendRedraw, my invokeLater calls piles up the runnables in
  the runnableQueue. 
 
This sounds like you are suspending the RunnableQueue not 
 suspending Redraw.  When redraws are suspended the runnables should 
 run as normal but the repaint operation should be skipped (dirty 
 regions will accumulate). 
 
  But when I release (unsuspend), what happends?
  I suppose the update manager unpiles the runnables. Does the repaint
  made only once when the queue is empty? It is not clear...
 
When many runnables are submitted at once the UpdateManager 
 will not repaint after every one but will repaint fairly frequently 
 (~50FPS).  This behavior is controlled by the MIN_REPAINT_TIME in 
 the UpdateManager which you can set with the property: 
  org.apache.batik.min_repaint_time 
 
 That said if you can 'logically' group the updates into sets 
 then suspending redraw and re-enabling it is probably better. 
 
  -Message d'origine-
  De : Helder Magalhães [mailto:helder.magalh...@gmail.com] 
  Envoyé : lundi 30 novembre 2009 14:53
  À : batik-users@xmlgraphics.apache.org
  Objet : Re: SVG update performances over X11 export display
  
  Hi Olivier,
  
  
   Is there a way to do this with the batik framework:
  
   beginBatchModifications()
   thread1 - getUpdateRunnableQueue().invokeLater(runnable1)
   thread2 - getUpdateRunnableQueue().invokeLater(runnable2)
   thread3 - getUpdateRunnableQueue().invokeLater(runnable3)
   thread2 - getUpdateRunnableQueue().invokeLater(runnable4)
   thread1 - getUpdateRunnableQueue().invokeLater(runnable5)
   endBatch()
  
  
   so that I will not have to manage my synchronized queue of 
  runnable and ensure the repaint is performed by the endBatch?
  
  Well, SVG has the (un)suspendRedraw [1] methods, which Batik
  implements [2]. ;-)
  
  
  Hope this helps,
   Helder
  
  
  [1] http://www.w3.org/TR/SVG/struct.html#DOMInterfaces
  [2] http://xmlgraphics.apache.org/batik/javadoc/org/apache/batik/
  dom/svg/SVGSVGContext.html
  
  -
  To unsubscribe, e-mail: batik-users-unsubscr...@xmlgraphics.apache.org
  For additional commands, e-mail: 
batik-users-h...@xmlgraphics.apache.org
  
  
  This mail has originated outside your organization, either from an 
  external partner or the Global Internet.
  Keep this in mind if you answer this message.
  
  
  
  
  The information in this e-mail is confidential. The contents may not
  be disclosed or used by anyone other than the addressee. Access to 
  this e-mail by anyone else is unauthorised.
  If you are not the intended recipient, please notify Airbus 
  immediately and delete this e-mail.
  Airbus cannot accept any responsibility for the accuracy or 
  completeness of this e-mail as it has been sent over public 
  networks. If you have any concerns over the content of this message 
  or its Accuracy or Integrity, please contact Airbus immediately.
  All outgoing e-mails from Airbus are checked using regularly updated
  virus scanning software but you should take whatever measures you 
  deem to be appropriate to ensure that this message and any 
  attachments are virus free.
  
  
  -
  To unsubscribe, e-mail: batik-users-unsubscr...@xmlgraphics.apache.org
  For additional commands, e-mail: 
batik-users-h...@xmlgraphics.apache.org
  
 This mail has originated outside your organization, either from an 
 external 

JavaDoc

2009-12-01 Thread mistercaste

Hi
I'm searching the org.w3c.dom.svg JavaDoc because a lot of Batik features
are based on this.
Is this part of the Batik project? Where can I find it?

Thanks!
-- 
View this message in context: 
http://old.nabble.com/JavaDoc-tp26594246p26594246.html
Sent from the Batik - Users mailing list archive at Nabble.com.


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



Re: JavaDoc

2009-12-01 Thread jonathan wood
I'm not sure where the javadoc is, but the spec will get you far here:

http://www.w3.org/TR/SVG/types.html#BasicDOMInterfaces

good luck!

On Tue, Dec 1, 2009 at 11:42 AM, mistercaste misterca...@gmail.com wrote:


 Hi
 I'm searching the org.w3c.dom.svg JavaDoc because a lot of Batik features
 are based on this.
 Is this part of the Batik project? Where can I find it?

 Thanks!
 --
 View this message in context:
 http://old.nabble.com/JavaDoc-tp26594246p26594246.html
 Sent from the Batik - Users mailing list archive at Nabble.com.


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