Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/jfree/XYStyle.java @ 4798:39885bdfc6fc
Added calculation of the "Umhuellende" to calculation of "W fuer ungleichwertige Abfluesse".
This is done by figuring out the WST columns that imfold the data and then do
simple "gleichwertige" calculations from the start of the interval. This
is too much because only the Qs are needed for the "Umhuellende".
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Sun, 13 Jan 2013 16:18:28 +0100 |
parents | 0b9b2a0c4e64 |
children |
line wrap: on
line source
package de.intevation.flys.jfree; import de.intevation.flys.utils.ThemeUtil; import java.awt.BasicStroke; import java.awt.Color; import java.awt.geom.Ellipse2D; import org.apache.log4j.Logger; import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.w3c.dom.Document; /** * Utility to apply theme-settings to a renderer. * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public class XYStyle implements Style { private static Logger logger = Logger.getLogger(XYStyle.class); protected Document theme; protected XYLineAndShapeRenderer renderer; public XYStyle(Document theme) { this.theme = theme; this.renderer = null; } /** * Applies line color, size and type attributes to renderer, also * whether to draw lines and/or points. */ @Override public XYLineAndShapeRenderer applyTheme(XYLineAndShapeRenderer r, int idx){ this.renderer = r; applyLineColor(r, idx); applyLineSize(r, idx); applyLineType(r, idx); applyShowLine(r, idx); applyShowPoints(r, idx); applyPointSize(r, idx); applyPointColor(r, idx); applyShowMinimum(r, idx); applyShowMaximum(r, idx); // Line label styles applyShowLineLabel(r, idx); applyShowLineLabelBG(r, idx); applyLineLabelFont(r, idx); applyLineLabelColor(r, idx); applyLineLabelBGColor(r, idx); // Point label styles // TODO: Currently point label are annotations and are not drawn this way /* applyShowPointLabelBG(r, idx); applyLinePointFont(r, idx); applyLinePointColor(r, idx); applyLinePointBGColor(r, idx);*/ return r; } /** Set line color to renderer. */ protected void applyLineColor(XYLineAndShapeRenderer r, int idx) { Color c = ThemeUtil.parseLineColorField(theme); if(c != null) { logger.debug("applyLineColor " + c.toString()); r.setSeriesPaint(idx, c); } else { logger.warn("applyLineColor: color is null - malformed linecolor field?"); } } /** Tells the renderer whether or not to add a label to a line. */ protected void applyShowLineLabel(XYLineAndShapeRenderer r, int idx) { if (!(r instanceof EnhancedLineAndShapeRenderer)) { return; } boolean showLabelLine = ThemeUtil.parseShowLineLabel(theme); boolean anyLabel = showLabelLine || ThemeUtil.parseShowWidth(theme) || ThemeUtil.parseShowLevel(theme) || ThemeUtil.parseShowMiddleHeight(theme); ((EnhancedLineAndShapeRenderer)r).setShowLineLabel(anyLabel, idx); } /** Tells the renderer whether or not to fill the bg of a lines label. */ protected void applyShowLineLabelBG(XYLineAndShapeRenderer r, int idx) { if (!(r instanceof EnhancedLineAndShapeRenderer)) { return; } boolean showLabelLine = ThemeUtil.parseLabelShowBackground(theme); ((EnhancedLineAndShapeRenderer)r).setShowLineLabelBG(idx, showLabelLine); } /** Tell the renderer which font (and -size and -style) to use for * linelabels. */ protected void applyLineLabelFont(XYLineAndShapeRenderer r, int idx) { if (!(r instanceof EnhancedLineAndShapeRenderer)) { return; } ((EnhancedLineAndShapeRenderer)r).setLineLabelFont( ThemeUtil.parseTextFont(theme), idx); } /** Tell the renderer which color to use for * linelabels. */ protected void applyLineLabelColor(XYLineAndShapeRenderer r, int idx) { if (!(r instanceof EnhancedLineAndShapeRenderer)) { return; } ((EnhancedLineAndShapeRenderer)r).setLineLabelTextColor( idx, ThemeUtil.parseTextColor(theme)); } /** Tell the renderer which color to use for bg of * linelabels. */ protected void applyLineLabelBGColor(XYLineAndShapeRenderer r, int idx) { if (!(r instanceof EnhancedLineAndShapeRenderer)) { return; } ((EnhancedLineAndShapeRenderer)r).setLineLabelBGColor(idx, ThemeUtil.parseTextBackground(theme)); } /** Set stroke of series. */ protected void applyLineSize(XYLineAndShapeRenderer r, int idx) { int size = ThemeUtil.parseLineWidth(theme); r.setSeriesStroke( idx, new BasicStroke(size)); } /** Set stroke strength of series. */ 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(size, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1.0f, dashes, 0.0f)); } protected void applyPointSize(XYLineAndShapeRenderer r, int idx) { int size = ThemeUtil.parsePointWidth(theme); int dim = 2 * size; r.setSeriesShape(idx, new Ellipse2D.Double(-size, -size, dim, dim)); } protected void applyPointColor(XYLineAndShapeRenderer r, int idx) { Color c = ThemeUtil.parsePointColor(theme); if (c != null) { r.setSeriesFillPaint(idx, c); r.setUseFillPaint(true); r.setDrawOutlines(false); } } /** * Sets form and visibility of points. */ protected void applyShowPoints(XYLineAndShapeRenderer r, int idx) { boolean show = ThemeUtil.parseShowPoints(theme); r.setSeriesShapesVisible(idx, show); r.setDrawOutlines(true); } protected void applyShowLine(XYLineAndShapeRenderer r, int idx) { boolean show = ThemeUtil.parseShowLine(theme); r.setSeriesLinesVisible(idx, show); } protected void applyShowMinimum(XYLineAndShapeRenderer r, int idx) { if (!(r instanceof EnhancedLineAndShapeRenderer)) { return; } boolean visible = ThemeUtil.parseShowMinimum(theme); EnhancedLineAndShapeRenderer er = (EnhancedLineAndShapeRenderer) r; er.setIsMinimumShapeVisisble(idx, visible); } protected void applyShowMaximum(XYLineAndShapeRenderer r, int idx) { if (!(r instanceof EnhancedLineAndShapeRenderer)) { return; } boolean visible = ThemeUtil.parseShowMaximum(theme); EnhancedLineAndShapeRenderer er = (EnhancedLineAndShapeRenderer) r; er.setIsMaximumShapeVisible(idx, visible); } @Override public XYLineAndShapeRenderer getRenderer() { return this.renderer; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :