package com.androidol.util.tiles;
import java.util.HashMap;
import com.androidol.basetypes.Pixel;
import com.androidol.constants.UtilConstants;
import com.androidol.tile.Tile;
import com.androidol.util.Util;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
public class TileCache implements UtilConstants {
//protected LRUTileHashMapCache mCachedTiles;
//protected LRUTileArrayCache mCachedTiles;
protected Tile2DArrayCache mCachedTiles;
/**
* Constructor TileCache
*/
public TileCache() {
//this.mCachedTiles = new LRUTileHashMapCache(MAX_MEMORY_CACHE_NUM);
//this.mCachedTiles = new LRUTileArrayCache(MAX_MEMORY_CACHE_NUM);
this.mCachedTiles = new Tile2DArrayCache(MIN_MEMORY_CACHE_DIM);
}
/**
* API Method: getTile
*
* @param url
* @return
*/
public synchronized Bitmap getTile(final String url) {
return this.mCachedTiles.get(url);
}
/**
* getTileAtCell(final Pixel cell)
*
* @param cell
* @return
*/
/*
public synchronized Bitmap getTileAtCell(final Pixel cell) {
if(this.mCachedTiles instanceof Tile2DArrayCache) {
int row = (int)cell.getX();
int col = (int)cell.getY();
return this.mCachedTiles.get(row, col);
} else {
return null;
}
}
*/
/**
* API Method: putTile
*
* @param url
* @param tile
*/
public synchronized void putTile(final String url, final Bitmap bitmap, final Tile tile) {
this.mCachedTiles.put(url, bitmap, tile);
}
/**
* API Method: putTile
*
* @param url
* @param data
*/
public synchronized void putTile(final String url, final byte[] data, final Tile tile) {
try {
final Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
this.mCachedTiles.put(url, bitmap, tile);
} catch(Exception e) {
Util.printErrorMessage(e.getMessage(), e);
}
}
/**
* API Method: removeTile
*
* @param url
* @return
*/
public synchronized Bitmap removeTile(final String url) {
return this.mCachedTiles.remove(url);
}
}