/**
* Copyright (C) 2013 Gundog Studios LLC.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.godsandtowers.graphics.game;
import gnu.trove.map.hash.TIntObjectHashMap;
import java.util.HashMap;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import com.gundogstudios.modules.Modules;
public class BitmapCache {
private static TIntObjectHashMap<Bitmap> bitmaps = new TIntObjectHashMap<Bitmap>();
private static HashMap<String, Bitmap> fileBitmaps = new HashMap<String, Bitmap>();
private static Resources resources;
private BitmapCache() {
}
public static void init(Resources resources) {
BitmapCache.resources = resources;
}
public static Bitmap getBitmap(int id) {
Bitmap bitmap = bitmaps.get(id);
if (bitmap == null) {
bitmap = BitmapFactory.decodeResource(resources, id);
bitmaps.put(id, bitmap);
}
return bitmap;
}
public static Bitmap getBitmap(String path, String file) {
Bitmap bitmap = fileBitmaps.get(file);
if (bitmap == null) {
bitmap = BitmapFactory.decodeStream(Modules.ASSETS.openInput(path, file));
fileBitmaps.put(file, bitmap);
}
return bitmap;
}
public static void clear() {
for (Bitmap bitmap : bitmaps.values()) {
bitmap.recycle();
}
for (Bitmap bitmap : fileBitmaps.values()) {
bitmap.recycle();
}
bitmaps.clear();
fileBitmaps.clear();
}
}