// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.interfaces;
import org.openstreetmap.gui.jmapviewer.JMapViewer;
import org.openstreetmap.gui.jmapviewer.Tile;
/**
* Implement this interface for creating your custom tile cache for
* {@link JMapViewer}.
*
* @author Jan Peter Stotz
*/
public interface TileCache {
/**
* Retrieves a tile from the cache if present, otherwise <code>null</code>
* will be returned.
*
* @param source
* the tile source
* @param x
* tile number on the x axis of the tile to be retrieved
* @param y
* tile number on the y axis of the tile to be retrieved
* @param z
* zoom level of the tile to be retrieved
* @return the requested tile or <code>null</code> if the tile is not
* present in the cache
*/
Tile getTile(TileSource source, int x, int y, int z);
/**
* Adds a tile to the cache. How long after adding a tile can be retrieved
* via {@link #getTile(TileSource, int, int, int)} is unspecified and depends on the
* implementation.
*
* @param tile the tile to be added
*/
void addTile(Tile tile);
/**
* @return the number of tiles hold by the cache
*/
int getTileCount();
/**
* Clears the cache deleting all tiles from memory.
*/
void clear();
/**
* Size of the cache.
* @return maximum number of tiles in cache
*/
int getCacheSize();
}