001    // License: GPL. Copyright 2007 by Immanuel Scholz and others
002    package org.openstreetmap.josm.gui.layer.markerlayer;
003    
004    import java.io.File;
005    
006    import 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     */
016    public 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        public Marker createMarker(WayPoint wp, File relativePath, MarkerLayer parentLayer, double time, double offset);
027    }