[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| [udig-devel] OSSIM Raster processing in uDig | 
We are impressed that Jesse is already getting a raster view plugin  
for uDig using OSSIM.  Thought it would be useful to summarize the  
telecons that we have had in the last couple of weeks between the  
uDig and OSSIM teams.
Our goal is to focus on uDig as a preferred end user client and  
incrementally expose OSSIM capabilities through the tool.  The OSSIM  
team is in the "final" stages of testing and configuring 1.6.0 of the  
library and tools.  The first area of focus will be to open and load  
an OSSIM view as a uDig layer.  Scott Bortman generated and added a  
JOSSIM branch last week.  This will provide Java bindings to the  
OSSIM library.  OSSIM is written in C++ using a MCV (Model Controller  
View) approach.  The core is found under the ossim tag and is GUI  
independent.  ossim_qt is the cvs tag for the controllers, views and  
applications that are based on the Trolltech qt library.  ImageLinker  
will not force a refresh from the database. This is not the case with
uDig 1.0.1, it does refresh from the database.
What is happening is that TilingRenderer sees the Redraw request the
same as a Pan (except with no changes to the view area). Therefore it
copies the existing image and never calls the child renderer.
I think the desired behavior would be for Redraw to force a full
refresh of the viewport, since that is what the user probably
expected.
My proposed change is to modifty RefreshTool (not sure why some stuff
says refresh and others redraw) to set the renderer states to
RENDER_REQUEST. This will force TilingRenderer (or any other renderer
for that matter) to call the child renderer which will redraw the
layers. I have tested this and it works. I will check this into trunk
if this is what everyone thinks we should do.
Here is the change to the run() method of RefreshTool:
   public void run() {
********* new changes *********
       // Force an update of the renderers
       List<IRenderer> renderers =3D context.getRenderManager().getRendere=
rs();
       for(IRenderer renderer : renderers){
           ((Renderer)renderer).setState(IRenderer.RENDER_REQUEST);
       }
********** end new changes ******
       context.getRenderManager().refresh(null);
   }
Cole