gernotbelger@8893: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@8893: * Software engineering by gernotbelger@8893: * Björnsen Beratende Ingenieure GmbH gernotbelger@8893: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@8893: * gernotbelger@8893: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@8893: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@8893: * documentation coming with Dive4Elements River for details. gernotbelger@8893: */ gernotbelger@8893: package org.dive4elements.river.artifacts.sinfo.flowdepth; gernotbelger@8893: gernotbelger@8893: import org.dive4elements.river.exports.ChartExtender; gernotbelger@8893: import org.dive4elements.river.exports.DiagramGenerator; gernotbelger@8893: import org.jfree.chart.axis.ValueAxis; gernotbelger@8893: import org.jfree.chart.plot.XYPlot; gernotbelger@8893: gernotbelger@8893: /** gernotbelger@8893: * @author Gernot Belger gernotbelger@8893: */ gernotbelger@8893: public class FlowDepthChartExtender implements ChartExtender { gernotbelger@8937: gernotbelger@8937: private static final String TKH_AXIS = "tkhAxis"; gernotbelger@8937: gernotbelger@8937: private static final String FLOWDEPTH_AXIS = "flowdepthAxis"; gernotbelger@8937: gernotbelger@8937: @Override gernotbelger@8937: public void beforeAutoZoom(final DiagramGenerator generator) { gernotbelger@8937: final ValueAxis tkhAxis = generator.getAxis(TKH_AXIS); gernotbelger@8937: if (tkhAxis != null) { gernotbelger@8937: /* If tkh is not the only dataset, we push it to the bottom */ gernotbelger@8937: final int numYAxes = generator.getNumYAxes(); gernotbelger@8937: if (numYAxes > 1) gernotbelger@8937: tkhAxis.setUpperMargin(4.0); gernotbelger@8937: } gernotbelger@8937: } gernotbelger@8937: gernotbelger@8893: /** gernotbelger@8893: * Synchronizes the location of '0' on the flow-depth-axis with the tkh-axis, by extending the lower bound of the gernotbelger@8893: * flow-depth-axis. gernotbelger@8893: */ gernotbelger@8893: @Override gernotbelger@8893: public void afterAutoZoom(final DiagramGenerator generator) { gernotbelger@8937: final ValueAxis axis1 = generator.getAxis(FLOWDEPTH_AXIS); gernotbelger@8937: final ValueAxis axis2 = generator.getAxis(TKH_AXIS); gernotbelger@8893: if (axis1 == null || axis2 == null) gernotbelger@8893: return; gernotbelger@8893: gernotbelger@8893: final double axis2lb = axis2.getLowerBound(); gernotbelger@8893: final double axis1ub = axis1.getUpperBound(); gernotbelger@8893: final double axis2ub = axis2.getUpperBound(); gernotbelger@8893: gernotbelger@8893: final double ratio = axis2lb / (axis2ub - axis2lb); gernotbelger@8893: final double axis1lbNew = axis1ub / (1 / ratio + 1); gernotbelger@8893: gernotbelger@8893: axis1.setLowerBound(axis1lbNew); gernotbelger@8893: } gernotbelger@8893: gernotbelger@8893: @Override gernotbelger@8893: public void afterGenerateChart(final DiagramGenerator generator, final XYPlot plot) { gernotbelger@9602: /* nothing to do */ gernotbelger@8893: } gernotbelger@8893: }