// Copyright (c) 2006 - 2008, Markus Strauch. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF // THE POSSIBILITY OF SUCH DAMAGE. package net.sf.sdedit.ui; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import javax.imageio.ImageIO; import net.sf.sdedit.Constants; import net.sf.sdedit.config.GlobalConfiguration; public class ImagePaintDevice extends Graphics2DPaintDevice implements Constants { private final static RenderingHints AALIAS = new RenderingHints( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); private Image image; public ImagePaintDevice() { super(); } public Image getImage() { return image; } public void writeToStream(OutputStream stream) throws IOException { drawAll(); ImageIO.write((RenderedImage) image, "PNG", stream); } public void saveImage(String fileName) throws IOException { OutputStream os = new FileOutputStream(fileName); writeToStream(os); } public void saveImage(File file) throws IOException { writeToStream(new FileOutputStream(file)); } @Override protected Graphics2D createDummyGraphics(boolean bold) { Image img = new BufferedImage(1, 1, BufferedImage.TYPE_USHORT_GRAY); Graphics2D g2d = (Graphics2D) img.getGraphics(); Font font = getFont(bold); g2d.setFont(font); return g2d; } @Override protected Graphics2D createGraphics() { if (getDiagram().isThreaded()) { image = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB); } else { image = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_USHORT_GRAY); } Graphics2D g2d = (Graphics2D) image.getGraphics(); g2d.setRenderingHints(AALIAS); g2d.setFont(getFont(false)); g2d.setColor(Color.WHITE); g2d.fillRect(0, 0, getWidth(), getHeight()); return g2d; } }