@Override public Renderer createRenderer(Reader reader, int width, int height, PixelFormat pixelFormat) { renderer = new RendererImpl(reader, width, height, pixelFormat); synchronized (renderer) { cursor = renderer.getCursor(); } init(renderer.getWidth(), renderer.getHeight()); return renderer; }
/** * @see * org.locationtech.udig.project.internal.render.impl.RendererImpl#setContext(org.locationtech.udig.project.render.RenderContext) */ @SuppressWarnings("unchecked") public void setContext(IRenderContext newContext) { if (context != null) { ((CompositeRenderContext) context).removeListener(contextListener); } if (newContext != null) { CompositeRenderContext compositeRenderContext = (CompositeRenderContext) newContext; compositeRenderContext.addListener(contextListener); for (IRenderContext context : compositeRenderContext.getContexts()) { if (findExecutor(context) == null) { Renderer renderer = getRendererCreator(context).getRenderer((RenderContext) context); getRenderExecutors().add(createRenderExecutor(renderer)); } } super.setContext(newContext); } }
@Override public void paintComponent(Graphics g) { synchronized (renderer) { offscreenImage = renderer.getOffscreanImage(); if (offscreenImage != null) { g.drawImage(offscreenImage, 0, 0, null); } } synchronized (cursor) { Image cursorImage = cursor.getImage(); if (showCursor && cursorImage != null && g.getClipBounds().intersects(cursor.rX, cursor.rY, cursor.width, cursor.height)) { g.drawImage(cursorImage, cursor.rX, cursor.rY, null); } } }
@Override public void setPixelFormat(PixelFormat pixelFormat) { if (renderer != null) { renderer.initPixelFormat(pixelFormat); } }