ingo@2327: package de.intevation.flys.jfree; ingo@2327: ingo@2327: ingo@2327: import org.jfree.chart.axis.ValueAxis; ingo@2327: import org.jfree.data.Range; ingo@2327: ingo@2327: ingo@2327: /** ingo@2327: * @author Ingo Weinzierl ingo@2327: */ ingo@2327: public class DoubleBounds implements Bounds { ingo@2327: ingo@2327: protected double lower; ingo@2327: protected double upper; ingo@2327: ingo@2327: ingo@2330: /** ingo@2330: * Default constructor. A DoubleBounds has always set lower < ingo@2330: * upper! ingo@2330: */ ingo@2327: public DoubleBounds(double lower, double upper) { ingo@2330: this.lower = Math.min(lower, upper); ingo@2330: this.upper = Math.max(lower, upper); ingo@2327: } ingo@2327: ingo@2327: ingo@2327: @Override ingo@2327: public Number getLower() { ingo@2327: return Double.valueOf(lower); ingo@2327: } ingo@2327: ingo@2327: ingo@2327: @Override ingo@2327: public Number getUpper() { ingo@2327: return Double.valueOf(upper); ingo@2327: } ingo@2327: ingo@2327: ingo@2327: @Override ingo@2327: public void applyBounds(ValueAxis axis) { ingo@2327: axis.setRange(new Range(lower, upper)); ingo@2327: } ingo@2327: ingo@2327: felix@3723: /** felix@3723: * Set extended range to ValueAxis. felix@3723: * @param percent how many percent to extend (in each direction, felix@3723: * thus 10 percent on [0,100] -> [-10,110]. felix@3723: */ ingo@2327: @Override ingo@2330: public void applyBounds(ValueAxis axis, int percent) { ingo@2330: double space = (upper - lower) / 100 * percent; ingo@2330: axis.setRange(new Range(lower-space, upper+space)); ingo@2330: } ingo@2330: ingo@2330: ingo@2330: @Override ingo@2327: public Bounds combine(Bounds bounds) { ingo@2327: if (bounds == null) { ingo@2327: return this; ingo@2327: } ingo@2327: ingo@2327: DoubleBounds other = (DoubleBounds) bounds; ingo@2327: ingo@2327: double otherLower = other.getLower().doubleValue(); ingo@2327: double otherUpper = other.getUpper().doubleValue(); ingo@2327: ingo@2327: return new DoubleBounds( ingo@2327: otherLower < lower ? otherLower : lower, ingo@2327: otherUpper > upper ? otherUpper : upper); ingo@2327: } ingo@2327: ingo@2327: ingo@2327: @Override ingo@2327: public String toString() { ingo@2327: return "DoubleBounds=[" + lower + " ; " + upper + "]"; ingo@2327: } ingo@2327: } ingo@2327: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :