@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); } }
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); }
@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); }
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); }