@Override
  public void actionPerformed(ActionEvent e) {
    // Send tiles to be rendered
    if ((!tilesWaitingToBeRendered.isEmpty())
        && ((System.currentTimeMillis() - lastTileChange) > 250)) {
      tilesWaitingToBeRendered.forEach(threeDeeRenderManager::renderTile);
      tilesWaitingToBeRendered.clear();
    }

    // Collect rendered tiles
    Set<RenderResult> renderResults = threeDeeRenderManager.getRenderedTiles();
    Rectangle repaintArea = null;
    for (RenderResult renderResult : renderResults) {
      Tile tile = renderResult.getTile();
      int x = tile.getX(), y = tile.getY();
      renderedTiles.put(tile, renderResult.getImage());
      Rectangle tileBounds = zoom(getTileBounds(x, y));
      if (repaintArea == null) {
        repaintArea = tileBounds;
      } else {
        repaintArea = repaintArea.union(tileBounds);
      }
    }
    if (repaintArea != null) {
      //            System.out.println("Repainting " + repaintArea);
      repaint(repaintArea);
    }
  }
示例#2
0
 private static WriteContinuation doRender(
     CompiledTemplate template, Scoper scoper, AdvisingAppendable out, RenderContext context)
     throws IOException {
   RenderResult result;
   try (WithScope scope = scoper.enter()) {
     result = template.render(out, context);
   } catch (Throwable t) {
     rewriteStackTrace(t);
     Throwables.propagateIfInstanceOf(t, IOException.class);
     throw Throwables.propagate(t);
   }
   if (result.isDone()) {
     return Continuations.done();
   }
   return new WriteContinuationImpl(result, scoper, context, out, template);
 }
示例#3
0
 @Test
 public void testExternalizeRenderResult() throws IOException, ClassNotFoundException {
   Map<String, String> map = new HashMap<String, String>();
   map.put("a", "aa");
   map.put("b", "bb");
   StringBuilder sb = new StringBuilder("hello");
   long rt = 1000;
   RenderResult rr = new RenderResult(map, sb, rt);
   byte[] ba = write(rr);
   rr = (RenderResult) read(ba);
   assertNotNull(rr);
   Map<String, String> headers = rr.getHeaders();
   assertEquals(2, headers.size());
   assertEquals("aa", headers.get("a"));
   assertEquals("hello", rr.getContent().toString());
   assertEquals(rt, rr.renderTime);
 }
示例#4
0
 WriteContinuationImpl(
     RenderResult result,
     Scoper scoper,
     RenderContext context,
     AdvisingAppendable out,
     CompiledTemplate template) {
   checkArgument(!result.isDone());
   this.result = checkNotNull(result);
   this.scoper = checkNotNull(scoper);
   this.context = checkNotNull(context);
   this.out = checkNotNull(out);
   this.template = checkNotNull(template);
 }