Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/chart/VerticalCrossSectionChart.java @ 521:1bf058f1a2d1
Generate seabed polygon to "Profilschnitte".
gnv-artifacts/trunk@615 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sun, 24 Jan 2010 20:24:03 +0000 |
parents | 79e80c289018 |
children | f598702b2a10 |
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/chart/VerticalCrossSectionChart.java Sun Jan 24 12:10:50 2010 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/VerticalCrossSectionChart.java Sun Jan 24 20:24:03 2010 +0000 @@ -1,36 +1,36 @@ package de.intevation.gnv.chart; -import java.util.Locale; +import de.intevation.gnv.jfreechart.PolygonDataset; +import de.intevation.gnv.jfreechart.PolygonPlot; +import de.intevation.gnv.jfreechart.PolygonRenderer; +import de.intevation.gnv.jfreechart.PolygonSeries; -import java.text.NumberFormat; +import de.intevation.gnv.math.AttributedXYColumns; + +import de.intevation.gnv.raster.Palette; import java.awt.Color; import java.awt.Paint; -import java.util.HashSet; - -import de.intevation.gnv.math.AttributedXYColumns; +import java.text.NumberFormat; -import de.intevation.gnv.jfreechart.PolygonDataset; -import de.intevation.gnv.jfreechart.PolygonPlot; -import de.intevation.gnv.jfreechart.PolygonSeries; -import de.intevation.gnv.jfreechart.PolygonRenderer; - -import de.intevation.gnv.raster.Palette; +import java.util.HashSet; +import java.util.Locale; +import java.util.Map; import org.jfree.chart.JFreeChart; +import org.jfree.chart.axis.NumberAxis; +import org.jfree.chart.axis.SymbolAxis; +import org.jfree.chart.axis.ValueAxis; + import org.jfree.chart.plot.PlotOrientation; -import org.jfree.chart.axis.ValueAxis; -import org.jfree.chart.axis.NumberAxis; -import org.jfree.chart.axis.SymbolAxis; +import org.jfree.chart.renderer.LookupPaintScale; import org.jfree.chart.title.PaintScaleLegend; import org.jfree.chart.title.TextTitle; -import org.jfree.chart.renderer.LookupPaintScale; - import org.jfree.ui.RectangleEdge; import org.jfree.ui.RectangleInsets; @@ -44,13 +44,28 @@ public static final class PalettePaintLookup implements PolygonRenderer.PaintLookup { - private Palette palette; + private Palette palette; + private Map<Integer, Paint> special; public PalettePaintLookup(Palette palette) { + this(palette, null); + } + + public PalettePaintLookup( + Palette palette, + Map<Integer, Paint> special + ) { this.palette = palette; + this.special = special; } public Paint getPaint(int index) { + if (special != null) { + Paint paint = special.get(index); + if (paint != null) { + return paint; + } + } return index < 0 ? Color.black : palette.getColor(index); @@ -79,6 +94,7 @@ protected JFreeChart chart; protected AttributedXYColumns columns; + protected Map<Integer, Paint> special; protected Palette palette; protected Locale locale; protected ChartLabels labels; @@ -92,8 +108,19 @@ Locale locale, ChartLabels labels ) { + this(columns, palette, null, locale, labels); + } + + public VerticalCrossSectionChart( + AttributedXYColumns columns, + Palette palette, + Map<Integer, Paint> special, + Locale locale, + ChartLabels labels + ) { this.columns = columns; this.palette = palette; + this.special = special; this.locale = locale; this.labels = labels; } @@ -112,7 +139,8 @@ for (int i = data.getSeriesCount()-1; i >= 0; --i) { PolygonSeries ps = data.getSeries(i); Integer fill = (Integer)ps.getAttribute("fill"); - if (fill != null) { + if (fill != null + && (special != null && !special.containsKey(fill))) { usedColors.add(fill); } } @@ -122,7 +150,7 @@ format.setMaximumFractionDigits(2); PolygonRenderer renderer = new PolygonRenderer( - new PalettePaintLookup(palette), + new PalettePaintLookup(palette, special), new LocalizedLabelGenerator(format)); ValueAxis domainAxis = new NumberAxis(this.labels.getDomainAxisLabel());