Mercurial > dive4elements > gnv-client
comparison gnv-artifacts/src/main/java/de/intevation/gnv/raster/PolygonDatasetProducer.java @ 437:b624879d2902
Added vectorizer rings callback to generate iso lines.
gnv-artifacts/trunk@485 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sun, 27 Dec 2009 05:25:40 +0000 |
parents | 6642ab6c583c |
children | f7038820df2e |
comparison
equal
deleted
inserted
replaced
436:6642ab6c583c | 437:b624879d2902 |
---|---|
10 | 10 |
11 import de.intevation.gnv.jfreechart.PolygonSeries; | 11 import de.intevation.gnv.jfreechart.PolygonSeries; |
12 import de.intevation.gnv.jfreechart.PolygonDataset; | 12 import de.intevation.gnv.jfreechart.PolygonDataset; |
13 import de.intevation.gnv.jfreechart.CompactXYItems; | 13 import de.intevation.gnv.jfreechart.CompactXYItems; |
14 | 14 |
15 /** | |
16 * @author Sascha L. Teichmann (sascha.teichmann@intevation.de) | |
17 */ | |
15 public class PolygonDatasetProducer | 18 public class PolygonDatasetProducer |
16 implements RingsHandler | 19 implements RingsHandler |
17 { | 20 { |
18 protected double minX; | 21 protected double minX; |
19 protected double minY; | 22 protected double minY; |
20 | |
21 protected double maxX; | 23 protected double maxX; |
22 protected double maxY; | 24 protected double maxY; |
23 | 25 |
24 protected HashMap<Integer, PolygonSeries> polygonSeries; | 26 protected HashMap<Integer, PolygonSeries> polygonSeries; |
25 | 27 |
63 /* minX = 0*m1 + b1 <=> b1 = minX | 65 /* minX = 0*m1 + b1 <=> b1 = minX |
64 * maxX = (width-1)*m1 + b1 | 66 * maxX = (width-1)*m1 + b1 |
65 * m1 = (maxX - minX)/(width-1) | 67 * m1 = (maxX - minX)/(width-1) |
66 */ | 68 */ |
67 | 69 |
68 double b1 = minX; | 70 double b1 = minX; |
69 double m1 = width != 1 | 71 double m1 = width != 1 |
70 ? (maxX - minX)/(width-1) | 72 ? (maxX - minX)/(width-1) |
71 : 0d; | 73 : 0d; |
72 | 74 |
73 double b2 = minY; | 75 double b2 = minY; |
74 double m2 = height != 1 | 76 double m2 = height != 1 |
75 ? (maxY - minY)/(height-1) | 77 ? (maxY - minY)/(height-1) |
76 : 0d; | 78 : 0d; |
77 | 79 |
78 for (Edge head: rings) { | 80 for (Edge head: rings) { |
79 Edge current = head; | 81 Edge current = head; |
80 do { | 82 do { |
81 double x = m1*(current.a % width) + b1; | 83 vertices.add(m1*(current.a % width) + b1); |
82 double y = m2*(current.a / width) + b2; | 84 vertices.add(m2*(current.a / width) + b2); |
83 vertices.add(x); | |
84 vertices.add(y); | |
85 current = current.next; | |
86 } | 85 } |
87 while (current != head); | 86 while ((current = current.next) != head); |
88 ps.addRing(new CompactXYItems(vertices.toNativeArray())); | 87 ps.addRing(new CompactXYItems(vertices.toNativeArray())); |
89 vertices.clear(); | 88 vertices.clear(); |
90 } | 89 } |
91 } | 90 } |
92 | 91 |