Frames | No Frames |
1: /* =========================================================== 2: * JFreeChart : a free chart library for the Java(tm) platform 3: * =========================================================== 4: * 5: * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors. 6: * 7: * Project Info: http://www.jfree.org/jfreechart/index.html 8: * 9: * This library is free software; you can redistribute it and/or modify it 10: * under the terms of the GNU Lesser General Public License as published by 11: * the Free Software Foundation; either version 2.1 of the License, or 12: * (at your option) any later version. 13: * 14: * This library is distributed in the hope that it will be useful, but 15: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 16: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 17: * License for more details. 18: * 19: * You should have received a copy of the GNU Lesser General Public 20: * License along with this library; if not, write to the Free Software 21: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 22: * USA. 23: * 24: * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 25: * in the United States and other countries.] 26: * 27: * ------------------------------ 28: * KeypointPNGEncoderAdapter.java 29: * ------------------------------ 30: * (C) Copyright 2004, by Richard Atkinson and Contributors. 31: * 32: * Original Author: Richard Atkinson; 33: * Contributor(s): -; 34: * 35: * $Id: KeypointPNGEncoderAdapter.java,v 1.4.2.2 2005/11/24 11:50:48 mungady Exp $ 36: * 37: * Changes 38: * ------- 39: * 01-Aug-2004 : Initial version (RA); 40: * 41: */ 42: 43: package org.jfree.chart.encoders; 44: 45: import com.keypoint.PngEncoder; 46: 47: import java.awt.image.BufferedImage; 48: import java.io.IOException; 49: import java.io.OutputStream; 50: 51: /** 52: * Adapter class for the Keypoint PNG Encoder. The ImageEncoderFactory will 53: * only return a reference to this class by default if the library has been 54: * compiled under a JDK < 1.4 or is being run using a JDK < 1.4. 55: * 56: * @author Richard Atkinson 57: */ 58: public class KeypointPNGEncoderAdapter implements ImageEncoder { 59: private int quality = 9; 60: private boolean encodingAlpha = false; 61: 62: /** 63: * Get the quality of the image encoding. The underlying encoder uses int 64: * values: 0 for no compression, and values 1 through 9 for various levels 65: * of compression (1 is best speed, 9 is best compression). 66: * 67: * @return A float representing the quality. 68: */ 69: public float getQuality() { 70: return this.quality; 71: } 72: 73: /** 74: * Set the quality of the image encoding (supported). The underlying 75: * encoder uses int values: 0 for no compression, and values 1 through 9 76: * for various levels of compression (1 is best speed, 9 is best 77: * compression). 78: * 79: * @param quality A float representing the quality. 80: */ 81: public void setQuality(float quality) { 82: this.quality = (int) quality; 83: } 84: 85: /** 86: * Get whether the encoder should encode alpha transparency. 87: * 88: * @return Whether the encoder is encoding alpha transparency. 89: */ 90: public boolean isEncodingAlpha() { 91: return this.encodingAlpha; 92: } 93: 94: /** 95: * Set whether the encoder should encode alpha transparency (supported). 96: * 97: * @param encodingAlpha Whether the encoder should encode alpha 98: * transparency. 99: */ 100: public void setEncodingAlpha(boolean encodingAlpha) { 101: this.encodingAlpha = encodingAlpha; 102: } 103: 104: /** 105: * Encodes an image in PNG format. 106: * 107: * @param bufferedImage The image to be encoded. 108: * @return The byte[] that is the encoded image. 109: * @throws IOException 110: */ 111: public byte[] encode(BufferedImage bufferedImage) throws IOException { 112: if (bufferedImage == null) { 113: throw new IllegalArgumentException("Null 'image' argument."); 114: } 115: PngEncoder encoder = new PngEncoder(bufferedImage, this.encodingAlpha, 116: 0, this.quality); 117: return encoder.pngEncode(); 118: } 119: 120: /** 121: * Encodes an image in PNG format and writes it to an 122: * <code>OutputStream</code>. 123: * 124: * @param bufferedImage The image to be encoded. 125: * @param outputStream The OutputStream to write the encoded image to. 126: * @throws IOException 127: */ 128: public void encode(BufferedImage bufferedImage, OutputStream outputStream) 129: throws IOException { 130: if (bufferedImage == null) { 131: throw new IllegalArgumentException("Null 'image' argument."); 132: } 133: if (outputStream == null) { 134: throw new IllegalArgumentException("Null 'outputStream' argument."); 135: } 136: PngEncoder encoder = new PngEncoder(bufferedImage, this.encodingAlpha, 137: 0, this.quality); 138: outputStream.write(encoder.pngEncode()); 139: } 140: 141: }