Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/exports/StyledXYSeries.java @ 3806:881fcd01e056
merged flys-artifacts/pre2.6-2011-11-04
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 28 Sep 2012 12:14:50 +0200 |
parents | a9b690d864a7 |
children | 6c24ffe946a5 |
line wrap: on
line source
package de.intevation.flys.exports; import java.awt.BasicStroke; import java.awt.Color; import java.awt.geom.Ellipse2D; import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.data.xy.XYSeries; import de.intevation.flys.utils.ThemeUtil; /** * Dataset in two dimensions with additional theme-document. * The theme-document will later "style" the graphical representation. */ public class StyledXYSeries extends XYSeries { protected Document theme; private static final Logger logger = Logger.getLogger(StyledXYSeries.class); public StyledXYSeries(String key, Document theme) { this(key, true, theme); } /** * @param sorted whether or not to sort the points. Sorting will move NANs * to one extrema which can cause problems in certain * algorithms. */ public StyledXYSeries(String key, boolean sorted, Document theme) { super(key, sorted); this.theme = theme; } public XYLineAndShapeRenderer applyTheme(XYLineAndShapeRenderer r, int idx){ applyLineColor(r, idx); applyLineSize(r, idx); applyLineType(r, idx); applyShowLine(r, idx); applyShowPoints(r, idx); return r; } protected void applyLineColor(XYLineAndShapeRenderer r, int idx) { Color c = ThemeUtil.parseLineColorField(theme); r.setSeriesPaint(idx, c); } protected void applyLineSize(XYLineAndShapeRenderer r, int idx) { int size = ThemeUtil.parseLineWidth(theme); r.setSeriesStroke( idx, new BasicStroke(Integer.valueOf(size))); } protected void applyLineType(XYLineAndShapeRenderer r, int idx) { int size = ThemeUtil.parseLineWidth(theme); float[] dashes = ThemeUtil.parseLineStyle(theme); // Do not apply the dashed style. if (dashes.length <= 1) { return; } r.setSeriesStroke( idx, new BasicStroke(Integer.valueOf(size), BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1.0f, dashes, 0.0f)); } protected void applyShowPoints(XYLineAndShapeRenderer r, int idx) { boolean show = ThemeUtil.parseShowPoints(theme); r.setSeriesShape(idx, new Ellipse2D.Double(-2.0, -2.0, 4.0, 4.0)); r.setSeriesShapesVisible(idx, show); r.setDrawOutlines(true); } protected void applyShowLine(XYLineAndShapeRenderer r, int idx) { boolean show = ThemeUtil.parseShowLine(theme); r.setSeriesLinesVisible(idx, show); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :