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] >