view gnv-artifacts/src/main/java/de/intevation/gnv/raster/KernelFilter.java @ 798:6cff63d0c434

Fixed vim modeline. Added some Javadoc. gnv-artifacts/trunk@880 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 06 Apr 2010 11:05:00 +0000
parents c4156275c1e1
children d766fe2d917a
line wrap: on
line source
package de.intevation.gnv.raster;

import org.apache.log4j.Logger;

import org.w3c.dom.Element;

/**
 * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a>
 */
public class KernelFilter
implements   Filter
{
    private static Logger log = Logger.getLogger(KernelFilter.class);

    public static class GaussFactory
    implements          Filter.Factory
    {
        public static final double DEFAULT_SIGMA  = 1.0d;
        public static final int    DEFAULT_RADIUS = 5;

        protected double sigma;
        protected int    radius;

        public GaussFactory() {
            sigma  = DEFAULT_SIGMA;
            radius = DEFAULT_RADIUS;
        }

        public void init(Element element) {
            String s = element.getAttribute("sigma");
            String r = element.getAttribute("radius");

            if ((s = s.trim()).length() > 0) {
                try {
                    sigma = Math.abs(Double.parseDouble(s));
                }
                catch (NumberFormatException nfe) {
                    log.warn("gauss sigma '" + s + "' not a valid float value.");
                }
            }

            if ((r = r.trim()).length() > 0) {
                try {
                    radius = Math.min(3, Math.abs(Integer.parseInt(r)));
                }
                catch (NumberFormatException nfe) {
                    log.warn("gauss radius '" + r + "' not a valid integer value.");
                }
            }
        }

        public Filter create() {
            return new KernelFilter(Raster.Kernel.createGauss(sigma, radius));
        }
    } // class GaussFactory

    protected Raster.Kernel kernel;

    public KernelFilter() {
    }

    public KernelFilter(Raster.Kernel kernel) {
        this.kernel = kernel;
    }

    public Raster filter(Raster raster) {
        return raster.create(kernel);
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org