Ticket #10638: 10638-v2.patch
| File 10638-v2.patch, 5.1 KB (added by , 10 years ago) |
|---|
-
src/org/openstreetmap/josm/data/DataSource.java
2 2 package org.openstreetmap.josm.data; 3 3 4 4 import java.awt.geom.Area; 5 import java.awt.geom.Path2D; 5 6 import java.util.ArrayList; 6 7 import java.util.Collection; 7 8 import java.util.List; … … 76 77 if (dataSources == null || dataSources.isEmpty()) { 77 78 return null; 78 79 } 79 Area a = new Area();80 Path2D.Double p = new Path2D.Double(); 80 81 for (DataSource source : dataSources) { 81 82 // create area from data bounds 82 a.add(new Area(source.bounds.asRect()));83 p.append(source.bounds.asRect(), false); 83 84 } 84 return a;85 return new Area(p); 85 86 } 86 87 87 88 /** -
src/org/openstreetmap/josm/data/osm/Node.java
409 409 410 410 @Override 411 411 public boolean isOutsideDownloadArea() { 412 return !isNewOrUndeleted() && getDataSet() != null && getDataSet().getDataSourceArea() != null413 && getCoor() != null && !getCoor().isIn(getDataSet().getDataSourceArea());412 java.awt.geom.Area dsArea = getDataSet() == null ? null : getDataSet().getDataSourceArea(); 413 return !isNewOrUndeleted() && dsArea != null && isLatLonKnown() && !getCoor().isIn(dsArea); 414 414 } 415 415 } -
src/org/openstreetmap/josm/data/validation/tests/WayConnectedToArea.java
3 3 4 4 import static org.openstreetmap.josm.tools.I18n.tr; 5 5 6 import java.awt.geom.Area; 6 7 import java.util.Arrays; 7 8 import java.util.List; 8 9 10 import org.openstreetmap.josm.Main; 11 import org.openstreetmap.josm.data.osm.DataSet; 9 12 import org.openstreetmap.josm.data.osm.Node; 10 13 import org.openstreetmap.josm.data.osm.OsmPrimitive; 11 14 import org.openstreetmap.josm.data.osm.Relation; … … 14 17 import org.openstreetmap.josm.data.validation.Test; 15 18 import org.openstreetmap.josm.data.validation.TestError; 16 19 import org.openstreetmap.josm.gui.mappaint.ElemStyles; 20 import org.openstreetmap.josm.gui.progress.ProgressMonitor; 17 21 18 22 /** 19 23 * Checks for ways connected to areas. … … 20 24 * @since 4682 21 25 */ 22 26 public class WayConnectedToArea extends Test { 27 private Area dsArea; 23 28 24 29 /** 25 30 * Constructs a new {@code WayConnectedToArea} test. … … 29 34 } 30 35 31 36 @Override 37 public void startTest(ProgressMonitor monitor) { 38 super.startTest(monitor); 39 DataSet dataSet = Main.getLayerManager().getEditDataSet(); 40 dsArea = dataSet == null ? null : dataSet.getDataSourceArea(); 41 } 42 43 @Override 32 44 public void visit(Way w) { 33 45 if (!w.isUsable() || w.isClosed() || !w.hasKey("highway")) { 34 46 return; … … 63 75 } 64 76 65 77 private void testForError(Way w, Node wayNode, OsmPrimitive p) { 66 if (wayNode.isOutsideDownloadArea()) { 78 // wayNode.isOutsideDownloadArea() 79 if (!wayNode.isNewOrUndeleted() && dsArea != null 80 && wayNode.isLatLonKnown() && !wayNode.getCoor().isIn(dsArea)) { 67 81 return; 68 82 } else if (wayNode.getReferrers().stream().anyMatch(p1 -> p1.hasTag("route", "ferry"))) { 69 83 return; -
src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
16 16 import java.awt.TexturePaint; 17 17 import java.awt.event.ActionEvent; 18 18 import java.awt.geom.Area; 19 import java.awt.geom.Path2D; 19 20 import java.awt.geom.Rectangle2D; 20 21 import java.awt.image.BufferedImage; 21 22 import java.io.File; … … 403 404 // on some platforms viewport bounds seem to be offset from the left, 404 405 // over-grow it just to be sure 405 406 b.grow(100, 100); 406 Area a = new Area(b);407 Path2D p = new Path2D.Double(); 407 408 408 // now successively subtractdownloaded areas409 // combine successively downloaded areas 409 410 for (Bounds bounds : data.getDataSourceBounds()) { 410 411 if (bounds.isCollapsed()) { 411 412 continue; 412 413 } 413 a.subtract(mv.getState().getArea(bounds));414 p.append(mv.getState().getArea(bounds), false); 414 415 } 416 // subtract combined areas 417 Area a = new Area(b); 418 a.subtract(new Area(p)); 415 419 416 420 // paint remainder 417 421 MapViewPoint anchor = mv.getState().getPointFor(new EastNorth(0, 0));
