Changeset 32528 in osm for applications/editors/josm/plugins/imagery_offset_db/src/iodb/ImageryOffsetTools.java
- Timestamp:
- 2016-07-02T03:55:03+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/imagery_offset_db/src/iodb/ImageryOffsetTools.java
r32329 r32528 1 // License: WTFPL. For details, see LICENSE file. 1 2 package iodb; 2 3 4 import static org.openstreetmap.josm.tools.I18n.tr; 5 3 6 import java.text.MessageFormat; 4 import java.util.*; 7 import java.util.List; 8 5 9 import org.openstreetmap.josm.Main; 6 10 import org.openstreetmap.josm.data.coor.EastNorth; … … 9 13 import org.openstreetmap.josm.gui.MapView; 10 14 import org.openstreetmap.josm.gui.layer.ImageryLayer; 11 import static org.openstreetmap.josm.tools.I18n.tr;12 15 13 16 /** 14 17 * Some common static methods for querying and processing imagery layers. 15 * 18 * 16 19 * @author Zverik 17 20 * @license WTFPL 18 21 */ 19 public class ImageryOffsetTools { 22 public final class ImageryOffsetTools { 20 23 /** 21 24 * A title for all dialogs created in this plugin. 22 25 */ 23 26 public static final String DIALOG_TITLE = tr("Imagery Offset Database"); 24 27 28 private ImageryOffsetTools() { 29 // Hide default constructor for utilities classes 30 } 31 25 32 /** 26 33 * Returns the topmost visible imagery layer. … … 28 35 */ 29 36 public static ImageryLayer getTopImageryLayer() { 30 if (Main.map == null || Main.map.mapView == null)37 if (Main.map == null || Main.map.mapView == null) 31 38 return null; 32 39 List<ImageryLayer> layers = Main.getLayerManager().getLayersOfType(ImageryLayer.class); 33 for (ImageryLayer layer : layers) {40 for (ImageryLayer layer : layers) { 34 41 String url = layer.getInfo().getUrl(); 35 if (layer.isVisible() && url != null && !url.contains("gps-")) {42 if (layer.isVisible() && url != null && !url.contains("gps-")) { 36 43 return layer; 37 44 } … … 39 46 return null; 40 47 } 41 48 42 49 /** 43 50 * Calculates the center of a visible map area. … … 49 56 ? new LatLon(0, 0) : proj.eastNorth2latlon(Main.map.mapView.getCenter()); 50 57 } 51 58 52 59 /** 53 60 * Calculates an imagery layer offset. … … 57 64 * @see #applyLayerOffset 58 65 */ 59 public static LatLon getLayerOffset( ImageryLayer layer, LatLon center) {66 public static LatLon getLayerOffset(ImageryLayer layer, LatLon center) { 60 67 Projection proj = Main.getProjection(); 61 68 EastNorth offsetCenter = Main.map.mapView.getCenter(); … … 64 71 return offsetLL; 65 72 } 66 73 67 74 /** 68 75 * Applies the offset to the imagery layer. … … 70 77 * @see #getLayerOffset 71 78 */ 72 public static void applyLayerOffset( ImageryLayer layer, ImageryOffset offset) {79 public static void applyLayerOffset(ImageryLayer layer, ImageryOffset offset) { 73 80 double[] dxy = calculateOffset(offset); 74 81 layer.setOffset(dxy[0], dxy[1]); … … 80 87 * @see #applyLayerOffset 81 88 */ 82 public static double[] calculateOffset( ImageryOffset offset) {89 public static double[] calculateOffset(ImageryOffset offset) { 83 90 Projection proj = Main.getProjection(); 84 91 EastNorth center = proj.latlon2eastNorth(offset.getPosition()); 85 92 EastNorth offsetPos = proj.latlon2eastNorth(offset.getImageryPos()); 86 return new double[] { center.getX() - offsetPos.getX(), center.getY() - offsetPos.getY()};93 return new double[] {center.getX() - offsetPos.getX(), center.getY() - offsetPos.getY()}; 87 94 } 88 95 89 96 /** 90 97 * Generate unique imagery identifier based on its type and URL. … … 92 99 * @return imagery id. 93 100 */ 94 public static String getImageryID( ImageryLayer layer) {101 public static String getImageryID(ImageryLayer layer) { 95 102 return layer == null ? null : 96 ImageryIdGenerator.getImageryID(layer.getInfo().getUrl(), layer.getInfo().getImageryType());103 ImageryIdGenerator.getImageryID(layer.getInfo().getUrl(), layer.getInfo().getImageryType()); 97 104 } 98 105 … … 134 141 * Converts distance in meters to a human-readable string. 135 142 */ 136 public static String formatDistance( double d ) { 137 if( d < 0.0095 ) return formatDistance(d * 1000, tr("mm"), true); 138 if( d < 0.095 ) return formatDistance(d * 100, tr("cm"), true ); 139 if( d < 0.95 ) return formatDistance(d * 100, tr("cm"), false); 140 if( d < 9.5 ) return formatDistance(d, tr("m"), true ); 141 if( d < 950 ) return formatDistance(d, tr("m"), false ); 142 if( d < 9500 ) return formatDistance(d / 1000, tr("km"), true); 143 if( d < 1e6 ) return formatDistance(d / 1000, tr("km"), false); 143 public static String formatDistance(double d) { 144 // CHECKSTYLE.OFF: SingleSpaceSeparator 145 if (d < 0.0095) return formatDistance(d * 1000, tr("mm"), true); 146 if (d < 0.095) return formatDistance(d * 100, tr("cm"), true); 147 if (d < 0.95) return formatDistance(d * 100, tr("cm"), false); 148 if (d < 9.5) return formatDistance(d, tr("m"), true); 149 if (d < 950) return formatDistance(d, tr("m"), false); 150 if (d < 9500) return formatDistance(d / 1000, tr("km"), true); 151 if (d < 1e6) return formatDistance(d / 1000, tr("km"), false); 152 // CHECKSTYLE.ON: SingleSpaceSeparator 144 153 return "\u221E"; 145 154 } … … 152 161 * @return A formatted string. 153 162 */ 154 private static String formatDistance( double d, String si, boolean floating) {163 private static String formatDistance(double d, String si, boolean floating) { 155 164 return MessageFormat.format(floating ? "{0,number,0.0} {1}" : "{0,number,0} {1}", d, si); 156 165 }
Note:
See TracChangeset
for help on using the changeset viewer.
