Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/jfree/StripedAreaDatasetRenderer.java @ 9496:d8e753d0fdb9
stripedArea introduced for Assessment Scheme/Bewertungsschema
author | gernotbelger |
---|---|
date | Wed, 26 Sep 2018 15:48:05 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/jfree/StripedAreaDatasetRenderer.java Wed Sep 26 15:48:05 2018 +0200 @@ -0,0 +1,69 @@ +/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde + * Software engineering by + * Björnsen Beratende Ingenieure GmbH + * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt + * + * This file is Free Software under the GNU AGPL (>=v3) + * and comes with ABSOLUTELY NO WARRANTY! Check out the + * documentation coming with Dive4Elements River for details. + */ +package org.dive4elements.river.jfree; + +import java.awt.Graphics2D; +import java.awt.Paint; +import java.awt.Stroke; +import java.awt.geom.GeneralPath; +import java.awt.geom.Rectangle2D; + +import org.dive4elements.river.jfree.StripedAreaDataset.Stripe; +import org.jfree.chart.axis.ValueAxis; +import org.jfree.chart.plot.CrosshairState; +import org.jfree.chart.plot.PlotRenderingInfo; +import org.jfree.chart.plot.XYPlot; +import org.jfree.chart.renderer.xy.AbstractXYItemRenderer; +import org.jfree.chart.renderer.xy.XYItemRendererState; +import org.jfree.data.xy.XYDataset; + +/** + * @author Domenico Nardi Tironi + */ +final class StripedAreaDatasetRenderer extends AbstractXYItemRenderer { + + private static final long serialVersionUID = 1L; + + @Override + public void drawItem(final Graphics2D g2, final XYItemRendererState state, final Rectangle2D dataArea, final PlotRenderingInfo info, final XYPlot plot, + final ValueAxis domainAxis, final ValueAxis rangeAxis, final XYDataset dataset, final int series, final int item, + final CrosshairState crosshairState, final int pass) { + + if (item != 0) + return; + + final StripedAreaDataset stripedDataset = (StripedAreaDataset) dataset; + final Stripe stripe = stripedDataset.getStripe(series); + + final double lower = stripe.getLower(); + final double upper = stripe.getUpper(); + + final double transLower = Double.isNaN(lower) ? dataArea.getMaxY() : rangeAxis.valueToJava2D(lower, dataArea, plot.getRangeAxisEdge()); + final double transUpper = Double.isNaN(upper) ? dataArea.getMinY() : rangeAxis.valueToJava2D(upper, dataArea, plot.getRangeAxisEdge()); + + final double transLeft = dataArea.getMinX(); + final double transRight = dataArea.getMaxX(); + + final GeneralPath area = new GeneralPath(); + + area.moveTo(transLeft, transLower); + area.lineTo(transRight, transLower); + area.lineTo(transRight, transUpper); + area.lineTo(transLeft, transUpper); + area.closePath(); + + final Paint paint = getItemPaint(series, item); + final Stroke stroke = getItemStroke(series, item); + g2.setPaint(paint); + g2.setStroke(stroke); + + g2.fill(area); + } +} \ No newline at end of file