001 package org.openstreetmap.gui.jmapviewer.interfaces;
002
003 import java.awt.Image;
004
005 import org.openstreetmap.gui.jmapviewer.Coordinate;
006
007 //License: GPL.
008
009 public interface Attributed {
010 /**
011 * @return True if the tile source requires attribution in text or image form.
012 */
013 boolean requiresAttribution();
014
015 /**
016 * @param zoom The optional zoom level for the view.
017 * @param botRight The bottom right of the bounding box for attribution.
018 * @param topLeft The top left of the bounding box for attribution.
019 * @return Attribution text for the image source.
020 */
021 String getAttributionText(int zoom, Coordinate topLeft, Coordinate botRight);
022
023 /**
024 * @return The URL to open when the user clicks the attribution text.
025 */
026 String getAttributionLinkURL();
027
028 /**
029 * @return The URL for the attribution image. Null if no image should be displayed.
030 */
031 Image getAttributionImage();
032
033 /**
034 * @return The URL to open when the user clicks the attribution image.
035 * When return value is null, the image is still displayed (provided getAttributionImage()
036 * returns a value other than null), but the image does not link to a website.
037 */
038 String getAttributionImageURL();
039
040 /**
041 * @return The attribution "Terms of Use" text.
042 * In case it returns null, but getTermsOfUseURL() is not null, a default
043 * terms of use text is used.
044 */
045 String getTermsOfUseText();
046
047 /**
048 * @return The URL to open when the user clicks the attribution "Terms of Use" text.
049 */
050 String getTermsOfUseURL();
051 }