Ticket #10638: 10638-v3.patch
| File 10638-v3.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.List; 7 8 9 import org.openstreetmap.josm.Main; 10 import org.openstreetmap.josm.data.osm.DataSet; 8 11 import org.openstreetmap.josm.data.osm.Node; 9 12 import org.openstreetmap.josm.data.osm.OsmPrimitive; 10 13 import org.openstreetmap.josm.data.osm.Relation; … … 13 16 import org.openstreetmap.josm.data.validation.Test; 14 17 import org.openstreetmap.josm.data.validation.TestError; 15 18 import org.openstreetmap.josm.gui.mappaint.ElemStyles; 19 import org.openstreetmap.josm.gui.progress.ProgressMonitor; 16 20 17 21 /** 18 22 * Checks for ways connected to areas. … … 19 23 * @since 4682 20 24 */ 21 25 public class WayConnectedToArea extends Test { 26 private Area dsArea; 22 27 23 28 /** 24 29 * Constructs a new {@code WayConnectedToArea} test. … … 28 33 } 29 34 30 35 @Override 36 public void startTest(ProgressMonitor monitor) { 37 super.startTest(monitor); 38 DataSet dataSet = Main.getLayerManager().getEditDataSet(); 39 dsArea = dataSet == null ? null : dataSet.getDataSourceArea(); 40 } 41 42 @Override 31 43 public void visit(Way w) { 32 44 if (!w.isUsable() || w.isClosed() || !w.hasKey("highway")) { 33 45 return; … … 62 74 } 63 75 64 76 private void testForError(Way w, Node wayNode, OsmPrimitive p) { 65 if (wayNode.isOutsideDownloadArea()) { 77 // wayNode.isOutsideDownloadArea() 78 if (!wayNode.isNewOrUndeleted() && dsArea != null 79 && wayNode.isLatLonKnown() && !wayNode.getCoor().isIn(dsArea)) { 66 80 return; 67 81 } else if (wayNode.getReferrers().stream().anyMatch(p1 -> p1.hasTag("route", "ferry"))) { 68 82 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; … … 401 402 // on some platforms viewport bounds seem to be offset from the left, 402 403 // over-grow it just to be sure 403 404 b.grow(100, 100); 404 Area a = new Area(b);405 Path2D p = new Path2D.Double(); 405 406 406 // now successively subtractdownloaded areas407 // combine successively downloaded areas 407 408 for (Bounds bounds : data.getDataSourceBounds()) { 408 409 if (bounds.isCollapsed()) { 409 410 continue; 410 411 } 411 a.subtract(mv.getState().getArea(bounds));412 p.append(mv.getState().getArea(bounds), false); 412 413 } 414 // subtract combined areas 415 Area a = new Area(b); 416 a.subtract(new Area(p)); 413 417 414 418 // paint remainder 415 419 MapViewPoint anchor = mv.getState().getPointFor(new EastNorth(0, 0));
