Changeset 33265 in osm for applications/editors/josm/plugins/reltoolbox/src/relcontext/ChosenRelation.java
- Timestamp:
- 2017-04-17T19:27:17+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/reltoolbox/src/relcontext/ChosenRelation.java
r32398 r33265 150 150 g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f * opacity)); 151 151 152 drawRelations(g, mv, bbox, chosenRelation); 152 drawRelations(g, mv, bbox, chosenRelation, new HashSet<>()); 153 153 154 154 g.setComposite(oldComposite); … … 156 156 } 157 157 158 private void drawRelations(Graphics2D g, MapView mv, Bounds bbox, Relation rel) { 159 for (OsmPrimitive element : rel.getMemberPrimitives()) { 160 if (element.getType() == OsmPrimitiveType.NODE) { 161 Node node = (Node) element; 162 Point center = mv.getPoint(node); 163 g.drawOval(center.x - 4, center.y - 4, 9, 9); 164 } else if (element.getType() == OsmPrimitiveType.WAY) { 165 Way way = (Way) element; 166 if (way.getNodesCount() >= 2) { 167 GeneralPath b = new GeneralPath(); 168 Point p = mv.getPoint(way.getNode(0)); 169 b.moveTo(p.x, p.y); 170 for (int i = 1; i < way.getNodesCount(); i++) { 171 p = mv.getPoint(way.getNode(i)); 172 b.lineTo(p.x, p.y); 158 private void drawRelations(Graphics2D g, MapView mv, Bounds bbox, Relation rel, Set<Relation> visitedRelations) { 159 if (!visitedRelations.contains(rel)) { 160 visitedRelations.add(rel); 161 for (OsmPrimitive element : rel.getMemberPrimitives()) { 162 if (element.getType() == OsmPrimitiveType.NODE) { 163 Node node = (Node) element; 164 Point center = mv.getPoint(node); 165 g.drawOval(center.x - 4, center.y - 4, 9, 9); 166 } else if (element.getType() == OsmPrimitiveType.WAY) { 167 Way way = (Way) element; 168 if (way.getNodesCount() >= 2) { 169 GeneralPath b = new GeneralPath(); 170 Point p = mv.getPoint(way.getNode(0)); 171 b.moveTo(p.x, p.y); 172 for (int i = 1; i < way.getNodesCount(); i++) { 173 p = mv.getPoint(way.getNode(i)); 174 b.lineTo(p.x, p.y); 175 } 176 g.draw(b); 173 177 } 174 g.draw(b); 178 } else if (element.getType() == OsmPrimitiveType.RELATION) { 179 Color oldColor = g.getColor(); 180 g.setColor(Color.magenta); 181 drawRelations(g, mv, bbox, (Relation) element, visitedRelations); 182 g.setColor(oldColor); 175 183 } 176 } else if (element.getType() == OsmPrimitiveType.RELATION) { 177 Color oldColor = g.getColor(); 178 g.setColor(Color.magenta); 179 drawRelations(g, mv, bbox, (Relation) element); 180 g.setColor(oldColor); 184 // todo: closedway, multipolygon - ? 181 185 } 182 // todo: closedway, multipolygon - ?183 186 } 184 187 }
Note:
See TracChangeset
for help on using the changeset viewer.