/** Stops the processing of the current tree. */ public void stopProcessing() { if (gvtTreeRenderer != null) { needRender = false; gvtTreeRenderer.halt(); haltProgressivePaintThread(); } }
/** Schedules a new GVT rendering. */ protected void scheduleGVTRendering() { if (gvtTreeRenderer != null) { needRender = true; gvtTreeRenderer.halt(); } else { renderGVTTree(); } }
/** Renders the GVT tree. */ protected void renderGVTTree() { Rectangle visRect = getRenderRect(); if (gvtRoot == null || visRect.width <= 0 || visRect.height <= 0) { return; } // Renderer setup. if (renderer == null || renderer.getTree() != gvtRoot) { renderer = createImageRenderer(); renderer.setTree(gvtRoot); } // Area of interest computation. AffineTransform inv; try { inv = renderingTransform.createInverse(); } catch (NoninvertibleTransformException e) { throw new IllegalStateException("NoninvertibleTransformEx:" + e.getMessage()); } Shape s = inv.createTransformedShape(visRect); // Rendering thread setup. gvtTreeRenderer = new GVTTreeRenderer( renderer, renderingTransform, doubleBufferedRendering, s, visRect.width, visRect.height); gvtTreeRenderer.setPriority(Thread.MIN_PRIORITY); Iterator it = gvtTreeRendererListeners.iterator(); while (it.hasNext()) { gvtTreeRenderer.addGVTTreeRendererListener((GVTTreeRendererListener) it.next()); } // Disable the dispatch during the rendering // to avoid concurrent access to the GVT tree. if (eventDispatcher != null) { eventDispatcher.setEventDispatchEnabled(false); } gvtTreeRenderer.start(); }