001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.data.imagery; 003 004import org.openstreetmap.gui.jmapviewer.Coordinate; 005import org.openstreetmap.gui.jmapviewer.Projected; 006import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate; 007import org.openstreetmap.gui.jmapviewer.interfaces.IProjected; 008import org.openstreetmap.josm.data.coor.EastNorth; 009import org.openstreetmap.josm.data.coor.LatLon; 010 011/** 012 * Allows easy conversion between JMapViewer coordinate types and JOSM coordinate types. 013 * @since 12669 014 */ 015public final class CoordinateConversion { 016 017 private CoordinateConversion() { 018 // Hide default constructor for utility classes 019 } 020 021 /** 022 * Converts an {@link EastNorth} to an {@link IProjected} instance. 023 * @param en east/north coordinate 024 * @return {@code IProjected} instance 025 */ 026 public static IProjected enToProj(EastNorth en) { 027 return new Projected(en.east(), en.north()); 028 } 029 030 /** 031 * Converts an {@link IProjected} to an {@link EastNorth} instance. 032 * @param p projected coordinate 033 * @return {@code EastNorth} instance 034 */ 035 public static EastNorth projToEn(IProjected p) { 036 return new EastNorth(p.getEast(), p.getNorth()); 037 } 038 039 /** 040 * Converts a {@link LatLon} to an {@link ICoordinate} instance. 041 * @param ll latitude/longitude coordinate 042 * @return {@code ICoordinate} instance 043 */ 044 public static ICoordinate llToCoor(LatLon ll) { 045 return new Coordinate(ll.lat(), ll.lon()); 046 } 047 048 /** 049 * Converts an {@link ICoordinate} to a {@link LatLon} instance. 050 * @param c coordinate 051 * @return {@code LatLon} instance 052 */ 053 public static LatLon coorToLL(ICoordinate c) { 054 return new LatLon(c.getLat(), c.getLon()); 055 } 056}