I panned around all over the place with no update of the images. I even panned far enough to move the image off the canvas, but when I brought it back the images weren't updated.
I take it that this is not expected? G. Wade Thomas E Deweese wrote: > > >>>>> "GWJ" == G Wade Johnson <[EMAIL PROTECTED]> writes: > > GWJ> Well, it almost does what I need.<shrug/> - I can find the > GWJ> documents attached to the images. - I can manipulate those > GWJ> documents. - The changes appear in the DOM for the subdocuments. > GWJ> - The changes don't appear on the screen. > > What if you 'force a repaint' do the changes show up? > You can generally force a repaint by panning around a bit. > > GWJ> Unless I can find a way to get the images to update after they > GWJ> change, I'll have to either combine the files (which makes them > GWJ> huge) or implement something specific to Batik. > > GWJ> Thanks again for all of your help. > > GWJ> G. Wade > > GWJ> Thomas E Deweese wrote: > >> >>>>> "GWJ" == G Wade Johnson <[EMAIL PROTECTED]> writes: > >> > GWJ> Thomas, Thanks for your help on this so far. > >> > GWJ> I've modified SVGImageElementBridge to give me a > GWJ> getReferencedDocument() method. Now, when I access what I thought > GWJ> was the Bridge for each <image/> I get null as the document. I > GWJ> have proven to myself that the member data is set correctly, so I > GWJ> assume that I'm not getting the Bridge correctly. > >> > GWJ> How's the "right" way to get the Bridge associated with an > GWJ> Element? > >> SVGOMElement.getSVGContext(); > >> > >> In dynamic documents this will return the bridge instance that was > >> used to build the corresponding GVT element. So in your case: > >> > >> SVGImageElementBridge imgBridge; SVGOMElement imageElem = ....; > >> imgBridge = (SVGImageElementBridge)imageElem.getSVGContext(); > >> > GWJ> G. Wade > >> > GWJ> Thomas E Deweese wrote: > >> >> >>>>> "GWJ" == G Wade Johnson <[EMAIL PROTECTED]> writes: > >> >> > GWJ> I've been working on the SVGOMImageElement trick. I finally > GWJ> worked my way down to getting the SVGImageElementBridge object > GWJ> associated with each image in the SVG file. So far so good. > >> >> > GWJ> Unfortunately, the imgDocument field in the SVGImageElementBridge > GWJ> is protected. I even tried to derive a class from > GWJ> SVGImageElementBridge to get access and can't. Any ideas or have > GWJ> I run down the wrong trail? > >> >> The simplest thing to do is to make modifications to the Batik > >> >> Source. So you can add a new method getReferencedDocument() to > >> the >> Bridge that returns the protected member. > >> >> > >> >> If this makes you squemish you can derive your own image element > >> >> bridge from Batik's and register it through a BridgeExtension - > >> >> then your bridge will get created/called instead of the default > >> >> one. The batik.extension.svg.BatikBridgeExtension is a fairly > >> good >> example of how to setup a bridge extension (although it > >> doesn't >> override any of the standard elements). This uses the > >> java >> 'Services' convention so you will need to create a services > >> file >> that advertises your extension (see >> > >> xml-batik/resources/META-INF/services/org.apache.batik.bridge.BridgeExtension). > >> >> > >> >> However the thrust of my suggestion was to add a new method to > >> >> batik.dom.svg.SVGOMImageElement something like 'Document >> > >> getReferencedDocument()'. Then implement this like most of the >> > >> SVGDOM is by defining an interface (like >> > >> batik.dom.svg.SVGTextContent) that is then implemented by the >> > >> Bridge. The bridge that was used for each element is tracked and > >> >> is available from SVGOMElement.getSVGContext(); (see >> > >> batik.dom.svg.SVGTextContentSupport - To separate the dynamic stuff > >> >> from the strict DOM stuff most of the mucking is done in > >> XXXSupport >> classes (SVGLocatableSupport is another example). > >> >> > >> >> Then in your code you just need to cast to SVGOMImageElement to > >> get >> the Document (no obvious mucking with bridges needed). > >> >> > >> >> For this to become part of Batik (assuming you are interested) > >> it >> would require a contribution agreement (and it would probably > >> wait >> until after 1.5 goes final) - So you may want to use the >> > >> BridgeExtension which shouldn't require modifying any Batik code >> > >> just extending it. > >> >> > >> >> I know, I know - more work... :) > >> >> > GWJ> G. Wade > >> >> > GWJ> "G. Wade Johnson" wrote: > >> >> >> Thomas, > >> >> >> > >> >> >> Thanks again. Everytime you answer a question for me, I find > >> >> myself >> with a lot more work.<grin/> > >> >> >> > >> >> >> >From what you've said, it looks like my best bet is to try > >> (in >> >> order): > >> >> >> > >> >> >> 1. SVGOMImageElement trick. > >> >> >> > >> >> >> 2. Build up composite on the fly. - Obvious, but I didn't > >> think >> of >> it. > >> >> >> > >> >> >> 3. Multiple JSVGCanvas objects. - I had thought about not >> > >> needing >> to rerender unchanged layers. > >> >> >> > >> >> >> With the multiImage idea, I'm not sure if the lazy evaluation > >> >> will >> cause me grief or not, so I'll save it. > >> >> >> > >> >> >> I'll try and post what I find for anyone else who runs into > >> this >> >> idea. > >> >> >> > >> >> >> Later, G. Wade > >> >> >> > >> >> >> Thomas E Deweese wrote: > >> >> >> > > >> >> >> > >>>>> "GWJ" == G Wade Johnson <[EMAIL PROTECTED]> > >> writes: > >> >> >> > > >> >> >> > GWJ> I think I know the answer already, but I'm going to > >> ask >> >> anyway. > GWJ> Overview: I have an application where I > >> will >> need >> to display > GWJ> multiple SVG images on top of (or > >> behind) >> one >> another. I will > GWJ> also need to manipulate > >> various >> elements on >> various images. The > GWJ> some of these > >> layers may >> be invisible >> until triggered by a user > GWJ> > >> action. > >> >> >> > > >> >> >> > GWJ> 1. I can generate the visual effect I want with the >> > >> <image/> >> element. > GWJ> a. This allows me to load multiple SVG > >> >> files that >> I can map to the > GWJ> same space. > GWJ> >> > >> b. However, I cannot >> find a way to "reach into" the SVG in the > > >> >> GWJ> image to >> manipulate internal elements. > >> >> >> > > >> >> >> > This should be doable. As far as reaching into to sub SVG > >> >> this > >> is a pretty small enhancement to the existing DOM. > >> The > >> >> BridgeUpdateHandler for the SVGOMImageElement already > >> has a >> >> reference > to the referenced document. This would of > >> course be a >> >> non-standard > SVG DOM (at least right now). > >> >> >> > > >> >> >> > GWJ> 2. I have seen the <multiImage/>/<subImageRef/> >> > >> system. It >> be able to > GWJ> tie loading multiple images >> > >> depending on zoom. > >> GWJ> a. I assume that I would have the >> > >> same manipulation problems >> as > GWJ> with the <image/> element. > >> >> >> > > >> >> >> > Yes, in fact they would be a bit worse because the way > >> > >> >> multiImage is implemented is 'lazy' so normally not all > >> documents >> >> are > loaded and also there is no 'one document' > >> associated (in >> >> fact I'm not > sure how this would make sense > >> in the context of >> a >> central application > tweaking docs since > >> you would have to >> >> 'retweak' documents when > resolutions > >> changes). > >> >> >> > > >> >> >> > GWJ> b. The files are supposed to be viewable by other SVG > >> >> >> viewers, > GWJ> although the manipulation features are only > >> >> >> available in my > GWJ> application. I'm not sure how these > >> elements >> >> would play with > GWJ> other viewers. > >> >> >> > > >> >> >> > You can fairly easily use 'switch' and 'requiredExtensions' > >> to >> > >> fall back to a standard image element when needed >> > >> (i.e. anything >> but > Batik :). > >> >> >> > > >> >> >> > GWJ> 3. There have been a few questions in the past on this > >> >> list >> about > GWJ> layering JSVGCanvas objects and displaying > >> one >> on top >> of another. > GWJ> a. I don't know if anyone has > >> ever >> gotten this >> approach to > GWJ> work. > >> >> >> > > >> >> >> > I've never tried it directly but I do know that transparent > >> > >> >> backgrounds work for the JSVGCanvas and this is probably > >> the >> most > >> important piece. > >> >> >> > > >> >> >> > GWJ> b. I assume I could just walk a list of documents and > >> >> >> manipulate > GWJ> all appropriate elements on each document. > >> >> >> > > >> >> >> > Sure you would have a list of JSVGCanvas's and you can get > >> the >> > >> document from them. > >> >> >> > > >> >> >> > GWJ> Does anybody have any other ideas or comments on these > >> >> >> ideas? > >> >> >> > > >> >> >> > You might consider building the composite document yourself > >> > >> >> (fetch each of the 'sub documents' and build the composite > >> >> document >> on > the client). This would solve the 'reaching > >> into' >> issue and >> allow you > to only have one JSVGCanvas. > >> >> >> > > >> >> >> > One other issue you might not have considered is that by > >> using >> > >> multiple JSVGCanvas's you have the potential > >> advantage that a >> > >> modification in on layer would not require > >> all the layers to >> >> re-render > (the JSVGCanvas maintains an > >> offscreen buffer which >> all >> the other > layers could use). > >> >> >> > > >> >> >> > GWJ> Thanks, G. Wade > >> >> >> > > >> >> >> > GWJ> > >> >> >> --------------------------------------------------------------------- > >> >> >> > GWJ> To unsubscribe, e-mail: >> >> > >> [EMAIL PROTECTED] > GWJ> 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] > >> >> > GWJ> --------------------------------------------------------------------- > GWJ> To unsubscribe, e-mail: [EMAIL PROTECTED] > GWJ> For additional commands, e-mail: [EMAIL PROTECTED] > >> >> > >> >> --------------------------------------------------------------------- > >> >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> For >> additional commands, e-mail: [EMAIL PROTECTED] > >> > GWJ> --------------------------------------------------------------------- > GWJ> To unsubscribe, e-mail: [EMAIL PROTECTED] > GWJ> For additional commands, e-mail: [EMAIL PROTECTED] > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [EMAIL PROTECTED] For > >> additional commands, e-mail: [EMAIL PROTECTED] > > GWJ> --------------------------------------------------------------------- > GWJ> To unsubscribe, e-mail: [EMAIL PROTECTED] > GWJ> 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]
