001    package org.openstreetmap.gui.jmapviewer.interfaces;
002    
003    import org.openstreetmap.gui.jmapviewer.JMapViewer;
004    import org.openstreetmap.gui.jmapviewer.Tile;
005    
006    //License: GPL. Copyright 2008 by Jan Peter Stotz
007    
008    /**
009     * Implement this interface for creating your custom tile cache for
010     * {@link JMapViewer}.
011     *
012     * @author Jan Peter Stotz
013     */
014    public interface TileCache {
015    
016        /**
017         * Retrieves a tile from the cache if present, otherwise <code>null</code>
018         * will be returned.
019         *
020         * @param source
021         *            the tile source
022         * @param x
023         *            tile number on the x axis of the tile to be retrieved
024         * @param y
025         *            tile number on the y axis of the tile to be retrieved
026         * @param z
027         *            zoom level of the tile to be retrieved
028         * @return the requested tile or <code>null</code> if the tile is not
029         *         present in the cache
030         */
031        public Tile getTile(TileSource source, int x, int y, int z);
032    
033        /**
034         * Adds a tile to the cache. How long after adding a tile can be retrieved
035         * via {@link #getTile(TileSource, int, int, int)} is unspecified and depends on the
036         * implementation.
037         *
038         * @param tile the tile to be added
039         */
040        public void addTile(Tile tile);
041    
042        /**
043         * @return the number of tiles hold by the cache
044         */
045        public int getTileCount();
046    }