01: /***********************************************************************************************
02: * Copyright 2002 (C) Nathaniel G. Auvil. All Rights Reserved.
03: *
04: * Redistribution and use of this software and associated documentation ("Software"), with or
05: * without modification, are permitted provided that the following conditions are met:
06: *
07: * 1. Redistributions of source code must retain copyright statements and notices.
08: * Redistributions must also contain a copy of this document.
09: *
10: * 2. Redistributions in binary form must reproduce the above copyright notice, this list of
11: * conditions and the following disclaimer in the documentation and/or other materials
12: * provided with the distribution.
13: *
14: * 3. The name "jCharts" or "Nathaniel G. Auvil" must not be used to endorse or promote
15: * products derived from this Software without prior written permission of Nathaniel G.
16: * Auvil. For written permission, please contact nathaniel_auvil@users.sourceforge.net
17: *
18: * 4. Products derived from this Software may not be called "jCharts" nor may "jCharts" appear
19: * in their names without prior written permission of Nathaniel G. Auvil. jCharts is a
20: * registered trademark of Nathaniel G. Auvil.
21: *
22: * 5. Due credit should be given to the jCharts Project (http://jcharts.sourceforge.net/).
23: *
24: * THIS SOFTWARE IS PROVIDED BY Nathaniel G. Auvil AND CONTRIBUTORS ``AS IS'' AND ANY
25: * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
26: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
27: * jCharts OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
28: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,STRICT LIABILITY, OR TORT
31: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
32: * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
33: ************************************************************************************************/package org.krysalis.jcharts.encoders;
34:
35: import org.krysalis.jcharts.Chart;
36: import org.krysalis.jcharts.chartData.ChartDataException;
37: import org.krysalis.jcharts.properties.PropertyException;
38:
39: import javax.imageio.ImageIO;
40: import java.awt.image.BufferedImage;
41: import java.io.IOException;
42: import java.io.OutputStream;
43:
44: /*************************************************************************************
45: * This class REQUIRES the jdk 1.4
46: *
47: * @author Nathaniel Auvil
48: * @version $Id: PNGEncoder.java,v 1.2 2003/05/26 13:40:20 nathaniel_auvil Exp $
49: ************************************************************************************/
50: public class PNGEncoder {
51: private static final String PNG = "png";
52:
53: static {
54: //---do not use a file cache as hurts performance
55: ImageIO.setUseCache(false);
56: }
57:
58: /******************************************************************************************
59: *
60: *
61: ******************************************************************************************/
62: private PNGEncoder() throws Exception {
63: throw new Exception(
64: "No need to create an instance of this class!");
65: }
66:
67: /******************************************************************************************
68: * Encodes the Chart to an OutputStream which can be a file or any other OutputStream
69: * implementation.
70: *
71: * @param chart
72: * @param outputStream
73: * @throws ChartDataException
74: * @throws PropertyException
75: * @throws IOException
76: *******************************************************************************************/
77: public static void encode(Chart chart, OutputStream outputStream)
78: throws ChartDataException, PropertyException, IOException {
79: BufferedImage bufferedImage = BinaryEncoderUtil.render(chart);
80: ImageIO.write(bufferedImage, PNG, outputStream);
81: }
82: }
|