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());

http://dive4elements.wald.intevation.org