Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/raster/IsoAttributeGenerator.java @ 1119:7c4f81f74c47
merged gnv-artifacts
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 28 Sep 2012 12:14:00 +0200 |
parents | f953c9a559d8 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/raster/IsoAttributeGenerator.java Fri Sep 28 12:14:00 2012 +0200 @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2010 by Intevation GmbH + * + * This program is free software under the LGPL (>=v2.1) + * Read the file LGPL.txt coming with the software for details + * or visit http://www.gnu.org/licenses/ if it does not exist. + */ + +package de.intevation.gnv.raster; + +/** + * Generates label attributes for iso lines. It takes the + * neighboring palette ranges and calculates the mid point + * between these two ranges. + * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a> + */ +public class IsoAttributeGenerator +implements IsoProducer.AttributeGenerator +{ + /** + * The palette where to look for the ranges. + */ + protected Palette palette; + + /** + * Default constructor. + */ + public IsoAttributeGenerator() { + } + + /** + * Constructor to create an IsoAttributeGenerator with + * a given lookup palette. + * @param palette The palette. + */ + public IsoAttributeGenerator(Palette palette) { + this.palette = palette; + } + + public Object generateAttribute(int neighbor1, int neighbor2) { + Palette.Entry e1 = palette.getEntryByIndex(neighbor1); + Palette.Entry e2 = palette.getEntryByIndex(neighbor2); + + if (e1 == null || e2 == null) { + return null; + } + + double e1t = e1.getFrom(); + double e2f = e2.getTo(); + + return Double.valueOf(e2f >= e1t + ? 0.5d*(e1t+e2f) + : 0.5d*(e2.getTo()+e1.getFrom())); + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :