001: /*
002: * ============================================================================
003: * GNU Lesser General Public License
004: * ============================================================================
005: *
006: * JasperReports - Free Java report-generating library.
007: * Copyright (C) 2001-2006 JasperSoft Corporation http://www.jaspersoft.com
008: *
009: * This library is free software; you can redistribute it and/or
010: * modify it under the terms of the GNU Lesser General Public
011: * License as published by the Free Software Foundation; either
012: * version 2.1 of the License, or (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017: * Lesser General Public License for more details.
018: *
019: * You should have received a copy of the GNU Lesser General Public
020: * License along with this library; if not, write to the Free Software
021: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
022: *
023: * JasperSoft Corporation
024: * 303 Second Street, Suite 450 North
025: * San Francisco, CA 94107
026: * http://www.jaspersoft.com
027: */
028: package net.sf.jasperreports.engine;
029:
030: import java.awt.Color;
031: import java.awt.Graphics2D;
032: import java.awt.Rectangle;
033: import java.awt.geom.Dimension2D;
034: import java.awt.image.BufferedImage;
035:
036: import net.sf.jasperreports.engine.util.JRImageLoader;
037:
038: /**
039: * @author Teodor Danciu (teodord@users.sourceforge.net)
040: * @version $Id: JRAbstractSvgRenderer.java 1508 2006-11-28 17:09:17Z teodord $
041: */
042: public abstract class JRAbstractSvgRenderer extends JRAbstractRenderer {
043:
044: /**
045: *
046: */
047: private static final long serialVersionUID = JRConstants.SERIAL_VERSION_UID;
048:
049: /**
050: *
051: */
052: public byte getType() {
053: return TYPE_SVG;
054: }
055:
056: /**
057: *
058: */
059: public byte getImageType() {
060: return IMAGE_TYPE_PNG;
061: }
062:
063: /**
064: *
065: */
066: public Dimension2D getDimension() {
067: return null;
068: }
069:
070: /**
071: *
072: */
073: public Color getBackcolor() {
074: return null;
075: }
076:
077: /**
078: *
079: */
080: public byte[] getImageData() throws JRException {
081: Dimension2D dimension = getDimension();
082: if (dimension != null) {
083: byte imageType = getImageType();
084: BufferedImage bi = new BufferedImage(
085: (int) dimension.getWidth(),
086: (int) dimension.getHeight(),
087: // avoid creating JPEG images with transparency that would result
088: // in invalid image files for some viewers (browsers)
089: (imageType == JRRenderable.IMAGE_TYPE_GIF || imageType == JRRenderable.IMAGE_TYPE_PNG) ? BufferedImage.TYPE_INT_ARGB
090: : BufferedImage.TYPE_INT_RGB);
091:
092: Graphics2D g = bi.createGraphics();
093: Color backcolor = getBackcolor();
094: if (backcolor != null) {
095: g.setColor(backcolor);
096: g.fillRect(0, 0, (int) dimension.getWidth(),
097: (int) dimension.getHeight());
098: }
099: render(g, new Rectangle((int) dimension.getWidth(),
100: (int) dimension.getHeight()));
101: g.dispose();
102:
103: return JRImageLoader.loadImageDataFromAWTImage(bi,
104: getImageType());
105: }
106: return null;
107: }
108:
109: }
|