view artifacts/src/main/java/org/dive4elements/river/jfree/StyledDomainMarker.java @ 8748:36d7bda0b47a

(issue1788) Fix area split if there are no NaN's in the data The split algorithmn splits in a way that it always creates at least two datasets. One before the NaN, one after the NaN. This is broken in case the dataset does not contain any NaN value as it resulted in two identical datasets. This changed the display and resulted in a broken area calculation. I've also added some commented out debug code that was helpful tracking down this problem.
author Andre Heinecke <andre.heinecke@intevation.de>
date Mon, 08 Jun 2015 16:53:54 +0200
parents 819481cc9195
children
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU AGPL (>=v3)
 * and comes with ABSOLUTELY NO WARRANTY! Check out the
 * documentation coming with Dive4Elements River for details.
 */

package org.dive4elements.river.jfree;

import java.awt.Color;

import org.jfree.chart.plot.IntervalMarker;

import org.dive4elements.river.themes.ThemeDocument;

/**
 * Marker that represents a highlighted interval.
 *
 * @author <a href="mailto:christian.lins@intevation.de">Christian Lins</a>
 */
public class StyledDomainMarker extends IntervalMarker {

    private static final long serialVersionUID = -4369417661339512342L;

    private final Color backgroundColor, backgroundColor2;

    public StyledDomainMarker(double start, double end, ThemeDocument theme) {
        super(start, end);

        backgroundColor = theme.parseAreaBackgroundColor();
        backgroundColor2 = new Color(
            255 - backgroundColor.getRed(),
            255 - backgroundColor.getGreen(),
            255 - backgroundColor.getBlue());
        useSecondColor(false);

        int alpha = 100 - theme.parseAreaTransparency(50);
        setAlpha(alpha / 100.0f);
    }

    /**
     * To properly differentiate several styled domain markers side by side,
     * we can use this switch to toggle between two colors.
     * @param secondColor
     */
    public void useSecondColor(boolean secondColor) {
        if(!secondColor) {
            if(backgroundColor != null)
                setPaint(backgroundColor);
        }
        else {
            if(backgroundColor2 != null)
                setPaint(backgroundColor2);
        }
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org