Hi Michael,

"Bishop, Michael W. CONTR J9C880" <[EMAIL PROTECTED]> wrote on 
01/03/2007 04:03:10 PM:

> >   In the AbstractJSVGComponent it overrides updateRenderingTransform
> > to implement what you are talking about.
> 
> Yes, this is what happens.  In order to "see" the changes, I have to
> call setDocument on the JSVGCanvas class though.  Is this correct?

   No.

> Otherwise the parent frame/window just resizes without any changes to
> the JSVGCanvas.  I attached a ComponentListener to my JSVGCanvas:

   I wonder if your JSVGCanvas is not setup to resize with it's parent?
I think the Canvas does a some stuff like setting it's preferred size
and invalidating it's layout that might trigger a relayout.

> public void componentResized(ComponentEvent componentEvent) {
>    jsvgCanvas.setDocument(currentDocument);
> }

   This should definitely _NOT_ be needed.  Is this listener on the
canvas or on one of it's parents? 

> > I suspect that you probably want the default behavior of the
> > canvas when recenterOnResize is set to true (it's just that
> > the scrollPane turns this off).
> 
> Yes.  If the scrollbars are NOT visible, I want the default behavior of
> the canvas.  If the scrollbars ARE visible, I want the default behavior
> of the JSVGScrollPane.  I think I need extend the JSVGScrollPane class
> to accommodate this as you said.  I only want the scrollbars to appear
> when I apply a zoom to the canvas.
> 
> Michael Bishop
> 
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
> Sent: Sunday, December 31, 2006 8:15 PM
> To: batik-users@xmlgraphics.apache.org
> Cc: batik-users@xmlgraphics.apache.org
> Subject: RE: Resizing a JSVGCanvas...
> 
> 
> Hi Michael, 
> 
> "Bishop, Michael W. CONTR J9C880" <[EMAIL PROTECTED]> wrote on
> 12/22/2006 11:10:43 AM:
> 
> > > If you want the canvas to change scale or pan position then
> > > the rendering transform needs to change.  The built in 
> > > updateRenderingTransform function does this in some cases but I 
> > > don't think you can all of what you want by adjusting component
> sizes.
> > 
> > OK, can we talk through the simplest case?  Assume I have a JSVGCanvas
> > WITHOUT a JSVGScrollPane.  I'm going to eliminate the scroll bars so I
> > can tackle one problem at a time.
> > 
> > My JSVGCanvas is viewing an entire document and is sized at 400x400.
> > 
> > I reduce the size of my window so it's now 75% of its original size.
> > 
> > At this point, the JSVGCanvas should be 300x300, but should also be
> > displaying the entire document.
> > 
> > To me, that sounds like I need to:
> > 
> > - Change the size of the component to 300x300.
> > - Apply something like a JSVGCanvas.ZoomAction to make the document
> fit
> > inside the JSVGCanvas.
> 
>    What happens in this case is that when the window is resized 
> a Swing 'componentResized' event is generated which is trapped 
> by the AbstractJGVTComponent.  This looks like: 
> 
>                 public void componentResized(ComponentEvent e) { 
>                     if (updateRenderingTransform()) 
>                         scheduleGVTRendering(); 
>                 } 
> 
>    In the AbstractJSVGComponent it overrides updateRenderingTransform 
> to implement what you are talking about.  The first thing it does 
> is recalculate the viewing transform (which is what fits the SVG 
> viewBox to the components width/height). This takes care of fitting 
> the image to the new component size.  The second part of the 
> function (after 'if (!recenterOnResize)') is trying to keep 
> what was the center of the view as the center of the view (this 
> is tricky in the presence of rotation etc...). 
> 
> > (This is how I would want it to work with a JSVGScrollPane if the
> > scrollbars are NOT visible. 
> 
>    I suspect that you probably want the default behavior of the 
> canvas when recenterOnResize is set to true (it's just that 
> the scrollPane turns this off). 
> 
> > I think when I reintroduce the JSVGScrollPane, I have to 
> > extend the class as you've said.)
> 
> > I'm going to do some experimenting, but I wanted to share my thoughts
> > and get feedback from the list in case I get stuck.
> > 
> > Michael Bishop
> > 
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
> > Sent: Thursday, December 21, 2006 7:48 PM
> > To: batik-users@xmlgraphics.apache.org
> > Cc: batik-users@xmlgraphics.apache.org
> > Subject: RE: Resizing a JSVGCanvas...
> > 
> > 
> > Hi Michael, 
> > 
> > "Bishop, Michael W. CONTR J9C880" <[EMAIL PROTECTED]> wrote
> on
> > 12/19/2006 10:24:32 AM:
> > 
> > >      Yeah, that's what I was afraid of.  I was hoping for some
> > guidance
> > > on doing it fairly simply, if there is such a way:
> > > 
> > > - If the scroll bars of the JSVGScrollPane aren't visible, then just
> > > size the JSVGCanvas according to the resize.  Is this the default
> > > behavior of the JSVGCanvas?  Even inside a JSVGScrollPane?
> > 
> >    Hmm, actually when it's inside a scrollPane the scroll pane 
> > sets 'recenterOnResize' to false.  Which means that the canvas 
> > keeps the upper left the upper left and just changes size ( 
> > showing more content on the right/bottom for example). 
> > 
> > > - If the scroll bars of the JSVGScrollPane are visible, then just
> size
> > > the JSVGScrollPane's viewable area.
> > > 
> > > Any hints on where to start? 
> > 
> >    You might consider subclassing/replacing/modifying the
> JSVGScrollPane
> > 
> > so it only sets recenterOnResize to false when the scrollbars are
> > showing... 
> > 
> > > Would I even need to touch rendering transforms or would setting 
> > > the size on these components be sufficient? 
> > 
> >    If you want the canvas to change scale or pan position then 
> > the rendering transform needs to change.  The built in 
> > updateRenderingTransform function does this in some cases but I 
> > don't think you can all of what you want by adjusting component sizes.
> 
> > 
> > > I know it needs experimentation; I'm just trying to narrow down the
> > > variables I need to play with.
> > > 
> > > Michael Bishop
> > > 
> > > -----Original Message-----
> > > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
> > > Sent: Friday, December 15, 2006 6:53 AM
> > > To: batik-users@xmlgraphics.apache.org
> > > Cc: batik-users@xmlgraphics.apache.org
> > > Subject: Re: Resizing a JSVGCanvas...
> > > 
> > > 
> > > Hi Michael, 
> > > 
> > > "Bishop, Michael W. CONTR J9C880" <[EMAIL PROTECTED]>
> wrote
> > on
> > > 12/14/2006 09:12:44 AM:
> > > 
> > > > so there are a bunch of transforms associated with the 
> > > > JSVGCanvas.  Plus you define a viewBox attribute in your SVG 
> > > > document.  What I'd like to do is have the JSVGCanvas resize when
> I 
> > > > resize my main Window/Frame.  If the user has zoomed in or out, I 
> > > > want to preserve that.  Basically I want to take what the user 
> > > > currently sees and resize it accordingly. 
> > > 
> > >    I was under the impression that this was more or less the 
> > > default behavior of the Canvas.  Anyway the code that handles 
> > > this is the 'updateRenderingTransform' method on the JSVGCanvas 
> > > (the default implementation is in AbstractJSVGComponent). 
> > > 
> > > > If the user's looking at an entire document and they resize the
> > window
> > > 
> > > > smaller, I want the entire document shown (smaller) in the smaller
> 
> > > > JSVGCanvas.  If the user is zoomed in and has scrolled to an area
> of
> > 
> > > > the document (I have a JSVGScrollPane), I want that viewing area
> to 
> > > > be the same when they resize.  In short, I want to preserve what
> the
> > 
> > > > user sees, just size it according to the window size.  Can I get
> > some 
> > > > pointers on how to achieve this? 
> > > 
> > >    You can override the default implementation and do what ever you 
> > > want, however I warn you it's tricker than it seems... ;) 
> > > 
> > >
> ---------------------------------------------------------------------
> > > 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]
> > 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 

Reply via email to