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}