001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.layer.markerlayer;
003
004import java.io.File;
005
006import org.openstreetmap.josm.data.gpx.WayPoint;
007
008/**
009 * This interface has to be implemented by anyone who wants to create markers.
010 *
011 * When reading a gpx file, all implementations of MarkerMaker registered with
012 * the Marker are consecutively called until one returns a Marker object.
013 *
014 * @author Frederik Ramm <frederik@remote.org>
015 */
016public interface MarkerProducers {
017    /**
018     * Returns a Marker object if this implementation wants to create one for the
019     * given input data, or <code>null</code> otherwise.
020     *
021     * @param wp waypoint data
022     * @param relativePath An path to use for constructing relative URLs or
023     *        <code>null</code> for no relative URLs
024     * @return A Marker object, or <code>null</code>.
025     */
026    Marker createMarker(WayPoint wp, File relativePath, MarkerLayer parentLayer, double time, double offset);
027}