Ticket #5627: optimize-speed.patch
| File optimize-speed.patch, 5.9 KB (added by , 15 years ago) |
|---|
-
src/org/openstreetmap/josm/gui/mappaint/SimpleNodeElemStyle.java
32 32 } else { 33 33 34 34 Color color; 35 boolean isConnection = n.isConnectionNode(); 35 36 36 37 if (painter.isInactive() || n.isDisabled()) { 37 38 color = settings.getInactiveColor(); 38 39 } else if (selected) { 39 40 color = member ? settings.getRelationSelectedColor() : settings.getSelectedColor(); 40 } else if ( n.isConnectionNode()) {41 } else if (isConnection) { 41 42 if (n.isTagged()) { 42 43 color = settings.getTaggedConnectionColor(); 43 44 } else { … … 53 54 54 55 final int size = max((selected ? settings.getSelectedNodeSize() : 0), 55 56 (n.isTagged() ? settings.getTaggedNodeSize() : 0), 56 ( n.isConnectionNode()? settings.getConnectionNodeSize() : 0),57 (isConnection ? settings.getConnectionNodeSize() : 0), 57 58 settings.getUnselectedNodeSize()); 58 59 59 60 final boolean fill = (selected && settings.isFillSelectedNode()) || 60 61 (n.isTagged() && settings.isFillTaggedNode()) || 61 ( n.isConnectionNode()&& settings.isFillConnectionNode()) ||62 (isConnection && settings.isFillConnectionNode()) || 62 63 settings.isFillUnselectedNode(); 63 64 64 65 painter.drawNode(n, color, size, fill, name); -
src/org/openstreetmap/josm/data/osm/Node.java
233 233 } 234 234 235 235 public boolean isConnectionNode() { 236 return (OsmPrimitive.getFilteredList(getReferrers(), Way.class)).size() > 1;236 return isReferredByWays(2); 237 237 } 238 238 239 239 public String get3892DebugInfo() { -
src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
1285 1285 return result; 1286 1286 } 1287 1287 1288 /** 1289 Return true, if this primitive is referred by at least n ways 1290 @param n Minimal number of ways to return true. Must be positive 1291 */ 1292 public final boolean isReferredByWays(int n) { 1293 // Count only referrers that are members of the same dataset (primitive can have some fake references, for example 1294 // when way is cloned 1295 Object referrers = this.referrers; 1296 if (referrers == null) return false; 1297 checkDataset(); 1298 if (referrers instanceof OsmPrimitive) { 1299 if (!(referrers instanceof Way)) return false; 1300 OsmPrimitive ref = (OsmPrimitive)referrers; 1301 if (ref.dataSet == dataSet) { 1302 return (n<=1); 1303 } 1304 return false; 1305 } else { 1306 int counter=0; 1307 for (OsmPrimitive o:(OsmPrimitive[])referrers) { 1308 if (dataSet == o.dataSet && o instanceof Way) { 1309 counter++; 1310 } 1311 } 1312 return counter>=n; 1313 } 1314 } 1315 1316 1288 1317 /*----------------- 1289 1318 * OTHER METHODS 1290 1319 *----------------/ -
src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java
215 215 */ 216 216 public void drawNode(Node n, Color color, int size, boolean fill, String name) { 217 217 if (size > 1) { 218 int radius = size / 2;219 218 Point p = nc.getPoint(n); 220 if ((p.x < 0) || (p.y < 0) || (p.x > nc.getWidth()) 221 || (p.y > nc.getHeight())) 222 return; 219 if ((p.x < 0) || (p.y < 0) || (p.x > nc.getWidth()) || (p.y > nc.getHeight())) return; 220 int radius = size / 2; 223 221 224 222 if (inactive || n.isDisabled()) { 225 223 g.setColor(inactiveColor); … … 227 225 g.setColor(color); 228 226 } 229 227 if (fill) { 230 g.fillRect(p.x - radius, p.y - radius, size, size); 231 g.drawRect(p.x - radius, p.y - radius, size, size); 228 g.fillRect(p.x - radius, p.y - radius, size + 1, size + 1); 232 229 } else { 233 230 g.drawRect(p.x - radius, p.y - radius, size, size); 234 231 } -
src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintVisitor.java
110 110 111 111 public void drawNode(Node n) { 112 112 /* check, if the node is visible at all */ 113 if((n.getEastNorth().east() > maxEN.east() ) || 114 (n.getEastNorth().north() > maxEN.north()) || 115 (n.getEastNorth().east() < minEN.east() ) || 116 (n.getEastNorth().north() < minEN.north())) 113 EastNorth en=n.getEastNorth(); 114 if((en.east() > maxEN.east() ) || 115 (en.north() > maxEN.north()) || 116 (en.east() < minEN.east() ) || 117 (en.north() < minEN.north())) 117 118 return; 118 119 119 120 ElemStyle nodeStyle = getPrimitiveStyle(n, false);
