BufferedImage preview;
State current;
public void createPreview( Graphics2D graphics, final IProgressMonitor monitor ) {
Dimension size = getBox().getSize();
try {
if (map != null) {
preview = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = preview.createGraphics();
try {
ApplicationGIS.drawMap(new DrawMapParameter(g, new java.awt.Dimension(
size.width, size.height), this.map, monitor));
} finally {
g.dispose();
}
current = new State(map.getViewportModel(), getBox().getSize());
graphics.drawImage(preview, 0, 0, size.width, size.height, 0, 0,
preview.getWidth(), preview.getHeight(), null);
}
} catch (Exception e) {
PrintingModelPlugin.log("", e); //$NON-NLS-1$
String message = "Error rendering Map: " + e.getMessage(); //$NON-NLS-1$
drawErrorMessage(graphics, message);
}
setDirty(false);
}
You could do something similar to get an image; for use in a View.
To make a single threaded renderer we could use this code as an example; MapEditor uses the "widget" MapViewer to get the job done; perhaps we can teach it to be single threaded using something similar to ApplicationGIS.drawMap.
Out of curiosity why are you interested in a single threaded renderer?
Jody