Thank you Thomas! Please ignore my posting from early this morning. Your reply was quarantined by my company email and I didn't notice that until today. I'll see if I can get this working today.
Randy Message from [EMAIL PROTECTED] received on 04/19/2007 07:31 AM 04/19/2007 07:31 AM [EMAIL PROTECTED] Please respond to [email protected] Sent by [EMAIL PROTECTED] To: [email protected] cc: [email protected] Subject: Re: JSVGCanvas.setRenderingTransform() Hi Randy, [EMAIL PROTECTED] wrote on 04/17/2007 04:10:19 PM: > > I hope somebody can shed some light on this. > > Basically, I want to do in software what could be done with a > control-drag-mousebutton1. Seems like there could be a simple > interface to call to do this, but I haven't found it yet. See batik.bridge.ViewBox /** * Parses the specified reference (from a URI) and returns the appropriate * transform. * * @param ref the reference of the URI that may specify additional attribute * values such as the viewBox, preserveAspectRatio or a transform * @param e the element interested in its view transform * @param w the width of the effective viewport * @param h The height of the effective viewport * @param ctx The BridgeContext to use for error information * @exception BridgeException if an error occured while computing the * preserveAspectRatio transform */ public static AffineTransform getViewTransform(String ref, Element e, float w, float h, BridgeContext ctx) { > I'm trying to implement what I call a "pre-zoomed" SVG file. In my > SVG file, I have added an element <x:defaultpicturesize viewBox="x y w h"/>. You probably want to look at: http://www.w3.org/TR/SVG11/linking.html#SVGFragmentIdentifiers As this is more or less already built into Batik. > Since I haven't found a call to "zoom it to this box", I tried using > setRenderingTransform(). After loading the SVG file (and after > gvtRenderingCompleted() is called), I look for this element. If I > find one, I create an AffineTransform and call setRenderingTransform() > > The problem is that this thing does not do what I expect it to. Affine transforms rarely do what you expect them to do unless you have been working with them for quite a while. My guess is that you aren't considering the viewBox transform which it sounds like may be introducing a small scale and or translate. > It is easy enough to center up the picture (if that's all I wanted > to do). I simply calculate the difference between the center of the > <svg:svg viewbox="..."> and the center of my desired viewbox. This > is straightforward and produces a view that looks close to centered > (but clearly is not exactly centered) > > When I apply a scaling transformation things go very off. First of > all, scaling appears to happen based on the upper left-hand corner > of the picture. For example, if I only scale (say 2x) what > previously was in the upper left-hand corner now fills the entire display. > > So I think, translate the upper left-hand corner of the desired > viewbox to the x and y of the <svg:svg> viewbox and then scale. > Still not right. Then I think, okay, it's scaling first so my > translation values actually need to be multiplied by the scale > factor - better but still not right. > > What am I missing here? Seems like this should be an easy thing to do. > > Regards, > Randy --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
