/** * $Id: mxImageCanvas.java,v 1.1 2012/11/15 13:26:47 gaudenz Exp $ * Copyright (c) 2007-2010, Gaudenz Alder, David Benson */ package com.mxgraph.canvas; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Point; import java.awt.image.BufferedImage; import com.mxgraph.util.mxUtils; import com.mxgraph.view.mxCellState; /** * An implementation of a canvas that uses Graphics2D for painting. To use an * image canvas for an existing graphics canvas and create an image the * following code is used: * * <code>BufferedImage image = mxCellRenderer.createBufferedImage(graph, cells, 1, Color.white, true, null, canvas);</code> */ public class mxImageCanvas implements mxICanvas { /** * */ protected mxGraphics2DCanvas canvas; /** * */ protected Graphics2D previousGraphics; /** * */ protected BufferedImage image; /** * */ public mxImageCanvas(mxGraphics2DCanvas canvas, int width, int height, Color background, boolean antiAlias) { this.canvas = canvas; previousGraphics = canvas.getGraphics(); image = mxUtils.createBufferedImage(width, height, background); if (image != null) { Graphics2D g = image.createGraphics(); mxUtils.setAntiAlias(g, antiAlias, true); canvas.setGraphics(g); } } /** * */ public mxGraphics2DCanvas getGraphicsCanvas() { return canvas; } /** * */ public BufferedImage getImage() { return image; } /** * */ public Object drawCell(mxCellState state) { return canvas.drawCell(state); } /** * */ public Object drawLabel(String label, mxCellState state, boolean html) { return canvas.drawLabel(label, state, html); } /** * */ public double getScale() { return canvas.getScale(); } /** * */ public Point getTranslate() { return canvas.getTranslate(); } /** * */ public void setScale(double scale) { canvas.setScale(scale); } /** * */ public void setTranslate(int dx, int dy) { canvas.setTranslate(dx, dy); } /** * */ public BufferedImage destroy() { BufferedImage tmp = image; if (canvas.getGraphics() != null) { canvas.getGraphics().dispose(); } canvas.setGraphics(previousGraphics); previousGraphics = null; canvas = null; image = null; return tmp; } }