Wilkins, Rob wrote:

Thomas,

I'm now using Batik 1.5.1rc2. I've placed out JSVGCanvas derived object into
a JSVGScrollPane object. This appears to all work and provides a much nicer
interface for the user to the panning etc. (as you suggested).

I have one minor problem in that I need really need to control the initial
resolution that the SVG is displayed at (so that I can ensure that the
overlaid objects always load from the backend server and get displayed in
the correct place relative to the SVG).

When I was placing the JSVGCanvas object in a JScrollPane I could do this
through an implementation of the Scrollable interface. When I move to
JSVGScrollPane the methods of this interface in my object are no longer
called. As a result the SVG just gets rendered to fill the opening size of
the JSVGCanvas window.

The JSVGCanvas calls a method 'setMySize(Dimension sz)' when a document is loaded to request the desired size. You should be able to override this method to do what ever you want to setup the document.

Is there away that I can enforce the size of the JSVGCanvas window before
the SVG is loaded (so that it is rendered to a size I control)? If I could
do this then I think all my current problems will be resolved.

I think the above does this.



Thanks,


Rob

-----Original Message-----
From: Thomas DeWeese [mailto:[EMAIL PROTECTED] Sent: 20 January 2004 14:19
To: [EMAIL PROTECTED]
Subject: Re: Displaying Java objects on top of JSVGCanvas objects


Hi Rob,

Wilkins, Rob wrote:


I spent the last two days re-working our code that overlays objects on the
SVG. Using your suggestion of overriding setRenderingTransform() method.

The good news is I have got almost all of the shape updates (in response

to


changes in the SVG rendering transform) working. It also allowed me to
remove many lines of the existing code and utilise the features of the
JSVGCanvas component in the correct manner.


Great!


I should point out that I have also dispensed with the scrolled panel that I was using in favour of the panning support built in to the JSVGCanvas component.


    This is fine if you like the 'built in' panning.  However I
strong suspect that the way you are doing things the JSVGScrollPane
from the 1.5.1rc2 release will just work (all it does it set and
listen to the rendering transform).


However I have hit the following problem. If I resize the window that

holds


the JSVGCanvas component I do not get a call to setRenderingTransform().

So


I get no chance to scale the overlaid components.


    This is handled in updateRenderingTransform, this is called when
the canvas changes size.  The reason this is 'different' is that when
the canvas changes size the normal behavior is to 'refit' the
SVG document's viewBox to the Canvas - thus it is not the Canvas's
transform that changes but the SVG's 'viewing' transform that
changes (this distinction is important to implement the SVG 'getCTM'
method correctly).

     If you are working with the 1.5.1rc2 release you
can avoid this behavior by calling 'setRecenterOnResize(false)'.
In this case the viewing transform will never change once the
document is loaded.


The strange thing is that the SVG is clearly re-rendered as the
GVTTreeRendererAdapter::gvtRenderingStarted()/gvtRenderingCompleted() are
called. Calls to getRenderingTransform() in these methods return the
identity transform.

What method should I override in order to get hold of the transform that

is


applied once the window has been resized thus allowing me to scale my
overlaid components and align them with the scaled SVG in the resized
window?


    The combined rendering and viewbox transform is available from
the JSVGCanvas.getViewBoxTransform().  It is my belief that this can
only change in the updateRenderingTransform call so overriding that
and using the getViewBoxTransform method should let you deal with
this issue.




--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]


*********************************************************************************** This email, its content and any attachments is PRIVATE AND CONFIDENTIAL to TANDBERG Television. If received in error please notify the sender and destroy the original message and attachments.

www.tandbergtv.com
***********************************************************************************


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to