Java tutorial
/* * Sonar, open source software quality management tool. * Copyright (C) 2008-2012 SonarSource * mailto:contact AT sonarsource DOT com * * Sonar is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * Sonar is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with Sonar; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 */ package org.sonar.server.charts.deprecated; import org.jfree.chart.JFreeChart; import org.jfree.chart.encoders.KeypointPNGEncoderAdapter; import org.jfree.chart.title.LegendTitle; import org.jfree.chart.title.TextTitle; import org.jfree.ui.RectangleEdge; import java.awt.*; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; public abstract class BaseChart { public static final Color BASE_COLOR = new Color(51, 51, 51); public static final Color BASE_COLOR_LIGHT = new Color(204, 204, 204); public static final Color SERIE_BORDER_COLOR = new Color(67, 119, 166); public static final Color[] COLORS = { new Color(5, 141, 199), new Color(80, 180, 50), new Color(237, 86, 27), new Color(237, 239, 0), new Color(36, 203, 229), new Color(100, 229, 114), new Color(255, 150, 85) }; public static final int FONT_SIZE = 13; private int width; private int height; protected BaseChart(int width, int height) { this.width = width; this.height = height; } public int getWidth() { return width; } public int getHeight() { return height; } public void setWidth(int width) { this.width = width; } public void setHeight(int height) { this.height = height; } protected Font getFont() { return new Font("SansSerif", Font.PLAIN, FONT_SIZE); } protected void configureChart(JFreeChart chart, boolean displayLegend) { if (displayLegend) { configureChart(chart, RectangleEdge.BOTTOM); } else { configureChart(chart, null); } } protected void configureChart(JFreeChart chart, RectangleEdge legendPosition) { chart.setBackgroundPaint(new Color(255, 255, 255, 0)); chart.setBackgroundImageAlpha(0.0f); chart.setBorderVisible(false); chart.setAntiAlias(true); chart.setTextAntiAlias(true); chart.removeLegend(); if (legendPosition != null) { LegendTitle legend = new LegendTitle(chart.getPlot()); legend.setPosition(legendPosition); legend.setItemPaint(BASE_COLOR); chart.addSubtitle(legend); } } protected void configureChartTitle(JFreeChart chart, String title) { if (title != null && title.length() > 0) { TextTitle textTitle = new TextTitle(title); chart.setTitle(textTitle); } } protected abstract BufferedImage getChartImage() throws IOException; protected BufferedImage getBufferedImage(JFreeChart chart) { return chart.createBufferedImage(getWidth(), getHeight(), Transparency.BITMASK, null); } public void exportChartAsPNG(OutputStream out) throws IOException { KeypointPNGEncoderAdapter encoder = new KeypointPNGEncoderAdapter(); encoder.setEncodingAlpha(true); encoder.encode(getChartImage(), out); } public byte[] exportChartAsPNG() throws IOException { ByteArrayOutputStream output = new ByteArrayOutputStream(); try { exportChartAsPNG(output); } finally { output.close(); } return output.toByteArray(); } protected BasicStroke getDashedStroke() { return getDashedStroke(1f); } protected BasicStroke getDashedStroke(float width) { return new BasicStroke(width, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, new float[] { 5.0f }, 0.0f); } }