public void paint(Graphics g) { if (layer == null) { logger.warning("NULL layer, skipping..."); return; } OMGraphicList list = layer.getList(); Projection proj = layer.getProjection(); Graphics2D g2 = (Graphics2D) g; if (layer.isProjectionOK(proj)) { if (getBuffer() == null) { // Not sure how we get here, but it's here just in case so that // the list might get painted if it exists and the buffered // image wasn't created. logger.fine("creating image buffer in paint"); if (list != null) { setBuffer(createAndPaintImageBuffer(list)); } } BufferedImage bufferedImage = getBuffer(); setCompositeOnGraphics(g2); if (bufferedImage != null) { AffineTransform af = new AffineTransform(); af.translate(offset.getX(), offset.getY()); g2.drawRenderedImage((BufferedImage) bufferedImage, af); if (logger.isLoggable(Level.FINE)) { logger.fine("RenderingPolicy:" + layer.getName() + ": rendering buffer"); } } else if (list != null) { super.setRenderingHints(g); list.render(g); if (logger.isLoggable(Level.FINE)) { logger.fine(layer.getName() + ": rendering list directly"); } } } else if (logger.isLoggable(Level.FINE)) { logger.fine( layer.getName() + ".paint(): " + (list == null ? "NULL list, skipping..." : " skipping due to projection.")); } }
protected BufferedImage createAndPaintImageBuffer(OMGraphicList list) { BufferedImage bufferedImage = null; if (list != null && layer != null) { int w = layer.getProjection().getWidth(); int h = layer.getProjection().getHeight(); bufferedImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); Graphics2D g2d = (Graphics2D) bufferedImage.getGraphics(); super.setRenderingHints(g2d); list.render(g2d); if (logger.isLoggable(Level.FINE)) { logger.fine(layer.getName() + ": rendering list into buffer"); } } return bufferedImage; }