/[schmitzm]/branches/2.4.x/src/skrueger/geotools/RenderingExecutor.java
ViewVC logotype

Diff of /branches/2.4.x/src/skrueger/geotools/RenderingExecutor.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/src/skrueger/geotools/RenderingExecutor.java revision 740 by alfonx, Wed Mar 3 10:32:14 2010 UTC branches/2.4.x/src/skrueger/geotools/RenderingExecutor.java revision 1383 by alfonx, Wed Jan 26 13:46:20 2011 UTC
# Line 5  import java.awt.Rectangle; Line 5  import java.awt.Rectangle;
5  import java.awt.geom.AffineTransform;  import java.awt.geom.AffineTransform;
6    
7  import org.apache.log4j.Logger;  import org.apache.log4j.Logger;
8    import org.geotools.filter.function.EnvFunction;
9  import org.geotools.geometry.jts.ReferencedEnvelope;  import org.geotools.geometry.jts.ReferencedEnvelope;
10  import org.geotools.renderer.GTRenderer;  import org.geotools.renderer.GTRenderer;
11  import org.geotools.renderer.RenderListener;  import org.geotools.renderer.RenderListener;
# Line 17  import schmitzm.geotools.gui.XMapPane; Line 18  import schmitzm.geotools.gui.XMapPane;
18   * {@link Thread} for rendering.   * {@link Thread} for rendering.
19   */   */
20  public class RenderingExecutor {  public class RenderingExecutor {
21          private final static Logger LOGGER = Logger.getLogger(RenderingExecutor.class);          private final static Logger LOGGER = Logger
22                            .getLogger(RenderingExecutor.class);
23          /**          /**
24           * Instance to a {@link RenderThread} doing any work. It's volatile so the           * Instance to a {@link RenderThread} doing any work. It's volatile so the
25           * correct value will always be visible to any {@link Thread}           * correct value will always be visible to any {@link Thread}
# Line 50  public class RenderingExecutor { Line 52  public class RenderingExecutor {
52           * @return true if the rendering task was accepted; false if it was rejected           * @return true if the rendering task was accepted; false if it was rejected
53           */           */
54          public synchronized boolean submit(ReferencedEnvelope envelope,          public synchronized boolean submit(ReferencedEnvelope envelope,
55                          Rectangle paintArea, Graphics2D graphics, final GTRenderer renderer                          Rectangle paintArea, Graphics2D graphics, final GTRenderer renderer) {
         // , AffineTransform worldToScreen  
         ) {  
56                  if (renderThread == null || !renderThread.isAlive()) {                  if (renderThread == null || !renderThread.isAlive()) {
57                          // System.out.println("is vacant... starting thread!");                          // System.out.println("is vacant... starting thread!");
58                          renderThread = null;                          renderThread = null;
59    
60                          renderThread = new RenderThread(paintArea, graphics, renderer,                          renderThread = new RenderThread(paintArea, graphics, renderer,
                         // worldToScreen,  
61                                          envelope);                                          envelope);
62                          renderThread.start();                          renderThread.start();
63    
64                          return true;                          return true;
65                  } else {                  } else {
                         // System.out.println("is busy... requesting stop!");  
66                          renderThread.getRenderer().stopRendering();                          renderThread.getRenderer().stopRendering();
67                          return false;                          return false;
68                  }                  }
# Line 81  public class RenderingExecutor { Line 79  public class RenderingExecutor {
79    
80                  public RenderThread(final Rectangle paintArea,                  public RenderThread(final Rectangle paintArea,
81                                  final Graphics2D graphics, GTRenderer renderer,                                  final Graphics2D graphics, GTRenderer renderer,
                                 // AffineTransform worldToScreen,  
82                                  ReferencedEnvelope mapEnv) {                                  ReferencedEnvelope mapEnv) {
83                          super(new RenderRun(paintArea, graphics, renderer, mapEnv                          super(new RenderRun(paintArea, graphics, renderer, mapEnv));
                         // , worldToScreen  
                                         ));  
84                          this.renderer = renderer;                          this.renderer = renderer;
85    
86                          setName("Render" + getName());                          setName("Render" + getName());
87    
                         // System.out.println("starting render thread " + getName());  
88                  }                  }
89    
90                  public GTRenderer getRenderer() {                  public GTRenderer getRenderer() {
# Line 105  public class RenderingExecutor { Line 99  public class RenderingExecutor {
99          class RenderRun implements Runnable, RenderListener {          class RenderRun implements Runnable, RenderListener {
100                  private final Rectangle paintArea;                  private final Rectangle paintArea;
101                  private final Graphics2D graphics;                  private final Graphics2D graphics;
                 // private final AffineTransform worldToScreen;  
102                  private final GTRenderer renderer;                  private final GTRenderer renderer;
103                  private final ReferencedEnvelope mapEnv;                  private final ReferencedEnvelope mapEnv;
104    
105                  public RenderRun(Rectangle paintArea, Graphics2D graphics,                  public RenderRun(Rectangle paintArea, Graphics2D graphics,
106                                  GTRenderer renderer, ReferencedEnvelope mapEnv                                  GTRenderer renderer, ReferencedEnvelope mapEnv) {
                 // ,  
                 // AffineTransform worldToScreen  
                 ) {  
107                          this.paintArea = paintArea;                          this.paintArea = paintArea;
108                          this.graphics = graphics;                          this.graphics = graphics;
109                          this.renderer = renderer;                          this.renderer = renderer;
110                          this.mapEnv = mapEnv;                          this.mapEnv = mapEnv;
                         // this.worldToScreen = worldToScreen;  
111                  }                  }
112    
113                  @Override                  @Override
# Line 126  public class RenderingExecutor { Line 115  public class RenderingExecutor {
115                          long startT = System.currentTimeMillis();                          long startT = System.currentTimeMillis();
116                          try {                          try {
117                                  renderer.addRenderListener(this);                                  renderer.addRenderListener(this);
118  //                              LOGGER.debug("start rendering...");                                  // LOGGER.debug("start rendering...");
119    
120                                  // Clear the graphics context                                  // Clear the graphics context
121                                  graphics.setBackground(mapPane.getMapBackgroundColor());                                  graphics.setBackground(mapPane.getMapBackgroundColor());
122                                  graphics.clearRect(paintArea.x, paintArea.y, paintArea.width,                                  graphics.clearRect(paintArea.x, paintArea.y, paintArea.width,
123                                                  paintArea.height);                                                  paintArea.height);
124    
125                                    // TODO It should be enough to set only the Local Value, but it
126                                    // isn't
127                                    EnvFunction.setGlobalValue(XMapPane.ENV_LANG,
128                                                    mapPane.getRenderLanguage());
129                                    EnvFunction.setLocalValue(XMapPane.ENV_LANG,
130                                                    mapPane.getRenderLanguage());
131    
132                                    // LOGGER.debug("Renderer language set to "
133                                    // + mapPane.getRenderLanguage());
134    
135                                  renderer.paint(graphics, paintArea, mapEnv);                                  renderer.paint(graphics, paintArea, mapEnv);
136    
137                                  // Kill the reference to this Thread so #isRunning will say                                  // Kill the reference to this Thread so #isRunning will say
138                                  // false directly                                  // false directly
139                                  renderThread = null;                                  renderThread = null;
140                                  mapPane.onRenderingCompleted(System.currentTimeMillis()-startT);                                  mapPane.onRenderingCompleted(System.currentTimeMillis()
141                                                    - startT);
142                          } catch (Exception e) {                          } catch (Exception e) {
143                                  mapPane.onRenderingFailed(e);                                  if (e != null && !e.toString().equals("0"))
144                                            mapPane.onRenderingFailed(e);
145                          } finally {                          } finally {
146                                  renderer.removeRenderListener(this);                                  renderer.removeRenderListener(this);
147                          }                          }

Legend:
Removed from v.740  
changed lines
  Added in v.1383

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26