Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/ZoomScale.java @ 5159:074051942f92
merge
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Fri, 01 Mar 2013 13:33:03 +0100 |
parents | e8c6fbed889b |
children |
line wrap: on
line source
package de.intevation.flys.artifacts.model; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.TreeMap; import org.apache.log4j.Logger; import de.intevation.flys.artifacts.math.Linear; public class ZoomScale { private static Logger logger = Logger.getLogger(ZoomScale.class); private HashMap<String, TreeMap<Double, Double>> rivers; public ZoomScale() { this.rivers = new HashMap<String, TreeMap<Double, Double>>(); } public ZoomScale(String river) { this(); rivers.put(river, new TreeMap<Double, Double>()); } public double getRadius(String river, double lower, double upper) { double range = Math.abs(upper) - Math.abs(lower); TreeMap<Double, Double> ranges = rivers.get(river); if (ranges == null) { return 0.001; } Map.Entry<Double, Double> next = ranges.higherEntry(range); Map.Entry<Double, Double> prev = ranges.lowerEntry(range); double x0 = 0d; double x1 = 0d; double y0 = 0d; double y1 = 0d; if (prev == null && next != null) { x1 = next.getKey(); y1 = next.getValue(); } else if (prev != null && next == null) { return prev.getValue(); } else { x0 = prev.getKey(); x1 = next.getKey(); y0 = prev.getValue(); y1 = next.getValue(); } return Linear.linear(range, x0, x1, y0, y1); } public void addRiver(String river) { if (!this.rivers.containsKey(river)) { this.rivers.put(river, new TreeMap<Double, Double>()); } } public Set<String> getRivers() { return this.rivers.keySet(); } public void addRange(String river, double range, double radius) { if (this.rivers.containsKey(river)) { this.rivers.get(river).put(range, radius); } else { this.rivers.put(river, new TreeMap<Double, Double>()); this.rivers.get(river).put(range, radius); } } }