diff gnv-artifacts/src/main/java/de/intevation/gnv/jfreechart/PolygonSeries.java @ 422:f426f55d4f7a

Added Ingo Weinzierl's special JFreeChart classes. gnv-artifacts/trunk@470 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 21 Dec 2009 16:47:45 +0000
parents
children 6642ab6c583c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/jfreechart/PolygonSeries.java	Mon Dec 21 16:47:45 2009 +0000
@@ -0,0 +1,151 @@
+package de.intevation.gnv.jfreechart;
+
+import java.util.Map;
+import java.util.HashMap;
+
+import org.jfree.data.Range;
+import org.jfree.data.general.Series;
+
+/**
+ * @author Sascha Teichmann <sascha.teichmann@intevation.de>
+ * @author Ingo Weinzierl <ingo.weinzierl@intevation.de>
+ */
+public class PolygonSeries
+extends      Series
+{
+    protected CompactXYItems []  rings;
+    protected Map                attributes;
+
+
+    public PolygonSeries(Comparable key, CompactXYItems [] rings) {
+        this(key, null, rings, new HashMap());
+    }
+
+    public PolygonSeries(
+        Comparable       key,
+        String           description,
+        CompactXYItems[] rings
+    ) {
+        this(key, description, rings, new HashMap());
+    }
+
+    public PolygonSeries(
+        Comparable        key,
+        String            description,
+        CompactXYItems [] rings,
+        Map               attributes
+    ) {
+        super(key, description);
+        this.rings      = rings;
+        this.attributes = attributes;
+    }
+
+
+    public void setRings(CompactXYItems [] rings) {
+        this.rings = rings;
+    }
+
+    public CompactXYItems [] getRings() {
+        return rings;
+    }
+
+    public void addRings(CompactXYItems [] newRings) {
+        if (newRings == null || newRings.length == 0) {
+            return;
+        }
+        if (rings == null || rings.length == 0) {
+            rings = newRings;
+        }
+        else {
+            CompactXYItems [] both =
+                new CompactXYItems[rings.length + newRings.length];
+            System.arraycopy(rings, 0, both, 0, rings.length);
+            System.arraycopy(newRings, 0, both, rings.length, newRings.length);
+            rings = both;
+        }
+    }
+
+    public Object getAttribute(Object key) {
+        return attributes.get(key);
+    }
+
+
+    public Object setAttribute(Object key, Object value) {
+        return attributes.put(key, value);
+    }
+
+
+    public int getItemCount() {
+        return rings.length;
+    }
+
+
+    public CompactXYItems getItem(int idx) {
+        return rings[idx];
+    }
+
+
+    public Object removeAttribute(Object key) {
+        return attributes.remove(key);
+    }
+
+
+    public boolean hasAttribute(Object key) {
+        return attributes.containsKey(key);
+    }
+
+
+    public Range getDomainBounds() {
+        double upper = Double.NEGATIVE_INFINITY;
+        double lower = Double.POSITIVE_INFINITY;
+        int    count = getItemCount();
+
+        for (int i = 0; i < count; i++) {
+            CompactXYItems  items = getItem(i);
+            double          minX  = items.getMinX();
+            double          maxX  = items.getMaxX();
+
+            if (!Double.isNaN(minX)) {
+                lower = Math.min(lower, minX);
+            }
+
+            if (!Double.isNaN(maxX)) {
+                upper = Math.max(upper, maxX);
+            }
+        }
+
+        if (lower > upper) {
+            return null;
+        }
+
+        return new Range(lower, upper);
+    }
+
+
+    public Range getRangeBounds() {
+        double upper = Double.NEGATIVE_INFINITY;
+        double lower = Double.POSITIVE_INFINITY;
+        int    count = getItemCount();
+
+        for (int i = 0; i < count; i++) {
+            CompactXYItems  items = getItem(i);
+            double          minY  = items.getMinY();
+            double          maxY  = items.getMaxY();
+
+            if (!Double.isNaN(minY)) {
+                lower = Math.min(lower, minY);
+            }
+
+            if (!Double.isNaN(maxY)) {
+                upper = Math.max(upper, maxY);
+            }
+        }
+
+        if (lower > upper) {
+            return null;
+        }
+
+        return new Range(lower, upper);
+    }
+}
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org