001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.coor.conversion;
003
004import org.openstreetmap.josm.data.coor.ILatLon;
005
006/**
007 * A class that converts lat/lon coordinates to string.
008 *
009 * @since 12735
010 */
011public interface ICoordinateFormat {
012    /**
013     * Get unique id for this coordinate format.
014     * @return unique id
015     */
016    String getId();
017
018    /**
019     * Get display name for this coordinate format
020     * @return display name (localized)
021     */
022    String getDisplayName();
023
024    /**
025     * Convert latitude to string.
026     * @param ll the coordinate
027     * @return formatted latitude
028     */
029    String latToString(ILatLon ll);
030
031    /**
032     * Convert longitude to string.
033     * @param ll the coordinate
034     * @return formatted longitude
035     */
036    String lonToString(ILatLon ll);
037
038    /**
039     * Convert the coordinate to string: latitude + separator + longitude
040     * @param ll the coordinate
041     * @param separator the separator
042     * @return formatted coordinate
043     */
044    default String toString(ILatLon ll, String separator) {
045        return latToString(ll) + separator + lonToString(ll);
046    }
047}