Changeset 4527 in josm for trunk/src/org/openstreetmap
- Timestamp:
- 2011-10-19T16:25:19+02:00 (13 years ago)
- Location:
- trunk/src/org/openstreetmap/josm
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
r4327 r4527 31 31 import org.openstreetmap.josm.gui.MapFrame; 32 32 import org.openstreetmap.josm.gui.MapView; 33 import org.openstreetmap.josm.gui.NavigatableComponent; 34 import org.openstreetmap.josm.gui.NavigatableComponent.SystemOfMeasurement; 33 35 import org.openstreetmap.josm.gui.layer.Layer; 34 36 import org.openstreetmap.josm.gui.layer.MapViewPaintable; … … 50 52 * 3. Improve snapping 51 53 * 52 * Need at least a setting for step length53 *54 54 * 4. Visual cues could be better 55 55 * … … 96 96 private boolean snapDefault; 97 97 98 private double snapThreshold; 98 private double snapThreshold; 99 private double snapDistanceMetric; 100 private double snapDistanceImperial; 101 private double snapDistanceChinese; 99 102 100 103 private ModifiersSpec snapModifierCombo; … … 196 199 private void updateModeLocalPreferences() { 197 200 // @formatter:off 198 snapThreshold = Main.pref.getDouble (prefKey("snap-threshold"), 0.35); 199 snapDefault = Main.pref.getBoolean(prefKey("snap-default"), true); 200 copyTagsDefault = Main.pref.getBoolean(prefKey("copy-tags-default"), true); 201 initialMoveDelay = Main.pref.getInteger(prefKey("initial-move-delay"), 200); 201 //snapThreshold = Main.pref.getDouble (prefKey("snap-threshold"), 0.35); // Old preference was stored in meters, hence the new name (percent) 202 snapThreshold = Main.pref.getDouble (prefKey("snap-threshold-percent"), 0.70); 203 snapDefault = Main.pref.getBoolean(prefKey("snap-default"), true); 204 copyTagsDefault = Main.pref.getBoolean(prefKey("copy-tags-default"), true); 205 initialMoveDelay = Main.pref.getInteger(prefKey("initial-move-delay"), 200); 206 snapDistanceMetric = Main.pref.getDouble(prefKey("snap-distance-metric"), 0.5); 207 snapDistanceImperial = Main.pref.getDouble(prefKey("snap-distance-imperial"), 1); 208 snapDistanceChinese = Main.pref.getDouble(prefKey("snap-distance-chinese"), 1); 202 209 203 210 snapModifierCombo = new ModifiersSpec(getStringPref("snap-modifier-combo", "?sC")); … … 408 415 if (snap) { 409 416 // TODO: Very simple snapping 410 // - Snap steps and/or threshold relative to the distance? 411 long closestWholeUnit = Math.round(realD); 412 if (Math.abs(closestWholeUnit - realD) < snapThreshold) { 417 // - Snap steps relative to the distance? 418 double snapDistance; 419 SystemOfMeasurement som = NavigatableComponent.getSystemOfMeasurement(); 420 if (som.equals(NavigatableComponent.CHINESE_SOM)) { 421 snapDistance = snapDistanceChinese * NavigatableComponent.CHINESE_SOM.aValue; 422 } else if (som.equals(NavigatableComponent.IMPERIAL_SOM)) { 423 snapDistance = snapDistanceImperial * NavigatableComponent.IMPERIAL_SOM.aValue; 424 } else { 425 snapDistance = snapDistanceMetric; // Metric system by default 426 } 427 double closestWholeUnit; 428 double modulo = realD % snapDistance; 429 if (modulo < snapDistance/2.0) { 430 closestWholeUnit = realD - modulo; 431 } else { 432 closestWholeUnit = realD + (snapDistance-modulo); 433 } 434 if (Math.abs(closestWholeUnit - realD) < (snapThreshold * snapDistance)) { 413 435 snappedRealD = closestWholeUnit; 414 436 } else { 415 snappedRealD = closestWholeUnit + Math.signum(closestWholeUnit - realD) * -0.5;437 snappedRealD = closestWholeUnit + Math.signum(realD - closestWholeUnit) * snapDistance; 416 438 } 417 439 } -
trunk/src/org/openstreetmap/josm/gui/MainApplication.java
r4259 r4527 310 310 311 311 String[] obsolete = { 312 "proxy.anonymous", // 01/2010 - not needed anymore. Can be removed mid 2010 313 "proxy.enable" // 01/2010 - not needed anymore. Can be removed mid 2010 312 "edit.make-parallel-way-action.snap-threshold" // 10/2011 - replaced by snap-threshold-percent. Can be removed mid 2012 314 313 }; 315 314 for (String key : obsolete) {
Note:
See TracChangeset
for help on using the changeset viewer.