Hi Javid,

"Javid Alimohideen" <[EMAIL PROTECTED]> wrote on 03/04/2006 04:31:04 PM:

> I added the UpdateManager as you had suggested but I still don't get the
> updates. I am sure about doing something wrong but couldn't figure out 
what.
> So, here is the initialization code:

        The basic code looks ok to me.

> I do the updates in the updatemenager runnable thread 
        Good.

> and later call the updatemanager.updateRendering method.

     You shouldn't have to do this, when a runnable completes it should
normally kick off an update of the canvas by calling 
UpdateManager.repaint().

> and I get the offscreen buffer by the getRepaintManager().getOffscreen
> method.

   I would suggest you register an 'updateCompleted' event listener with
the UpdateManager.  This will be called with an UpdateManagerEvent that
will have the offscreen that you should be using.

> It would be also helpful if you could point me to the batik source files
> that I must look at.

   Well the method that kicks off the update is the 
'UpdateManager.repaint()'
method (which is automatically called when a runnable completes in the
UpdateManager's runnable queue. 

> public void initialize() {
>       GraphicsNode gvtRoot = null ;
> 
>       try {
>          ctx.setDynamicState(BridgeContext.DYNAMIC);
>          gvtRoot = builder.build(ctx, svgDocument);
>       }
>       catch (BridgeException e) { e.printStackTrace(); }
>       renderer = PavisRenderer.getPavisRenderer();
> 
>       float docWidth = (float) ctx.getDocumentSize().getWidth();
>       float docHeight = (float) ctx.getDocumentSize().getHeight();
> 
>       float xscale = clientDisplaySize.width/docWidth;
>       float yscale = clientDisplaySize.height/docHeight;
>       float scale = Math.min(xscale, yscale);
> 
>       AffineTransform px  = AffineTransform.getScaleInstance(scale, 
scale);
> 
>       double tx = -0 + (clientDisplaySize.width/scale - docWidth)/2;
>       double ty = -0 + (clientDisplaySize.height/scale - docHeight)/2;
>       px.translate(tx, ty);
>       CanvasGraphicsNode cgn = getGraphicsNode(gvtRoot);
>         if (cgn != null) {
>             cgn.setViewingTransform(px);
>             curTxf = new AffineTransform();
>         } else {
>             curTxf = px;
>         }
>       manager = new UpdateManager(ctx, gvtRoot, svgDocument);
>       ImageRenderer ren = renderer.getImageRenderer();
>       ren.updateOffScreen(clientDisplaySize.width, 
clientDisplaySize.height);
>       ren.setTree(gvtRoot);
>       ren.setTransform(curTxf);
>       manager.manageUpdates(renderer.getImageRenderer());
>       manager.getUpdateRunnableQueue().invokeLater(new Runnable() {
>          public void run() {
>             java.awt.Rectangle r = new java.awt.Rectangle( 0, 0,
> clientDisplaySize.width, clientDisplaySize.height);
>             manager.updateRendering(curTxf, true, r, 
clientDisplaySize.width,
> clientDisplaySize.height);
>             render();
>          }
>       });
>       this.gvtRoot = gvtRoot;
>    }
> 
> 
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> Sent: Saturday, March 04, 2006 7:36 AM
> To: [email protected]
> Cc: batik
> Subject: Re: Batik offscreen rendering howto?
> 
> 
> Hi Javid,
> 
> "Javid Alimohideen" <[EMAIL PROTECTED]> wrote on 03/03/2006 08:28:03 
PM:
> 
> > I have a dynamic renderer in my application to render the svg content
> > (offscreen). The rendering works fine but if I make some changes to 
the
> > document the renderer.repaint method doesn't reflect the changes made 
to
> the
> > dom.
> 
>     It sounds like you didn't build the Rendering trying with the
> Bridge set to DYNAMIC.  In this case it won't register listeners
> with the Dom tree to keep the GVT tree in sync with the DOM.
> 
>     Also the dynamic renderer alone is not sufficient to handle
> the 'updates' you need to give it the 'dirty' regions.  Which
> is part of what the UpdateManager normally does for you.
> 
> 
> ---------------------------------------------------------------------
> 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