\r
import java.io.IOException;\r
\r
+import charactermanaj.graphics.colormodel.ColorModel;\r
import charactermanaj.graphics.filters.ColorConvertParameter;\r
import charactermanaj.graphics.io.ImageCache;\r
import charactermanaj.graphics.io.ImageCachedLoader;\r
public class ColorConvertedImageCachedLoader extends ColorConvertedImageLoaderImpl {\r
\r
private ImageCache<ColorConvertedImageKey> caches = new ImageCache<ColorConvertedImageKey>();\r
- \r
+\r
public ColorConvertedImageCachedLoader() {\r
this(new ImageCachedLoader());\r
}\r
- \r
+\r
public ColorConvertedImageCachedLoader(ImageLoader imageLoader) {\r
super(imageLoader);\r
}\r
\r
@Override\r
public LoadedImage load(ImageResource file,\r
- ColorConvertParameter colorConvParam) throws IOException {\r
+ ColorConvertParameter colorConvParam, ColorModel colorModel)\r
+ throws IOException {\r
if (file == null) {\r
throw new IllegalArgumentException();\r
}\r
param = colorConvParam.clone();\r
}\r
ColorConvertedImageKey key = new ColorConvertedImageKey(param, file);\r
- \r
+\r
synchronized (caches) {\r
LoadedImage loadedImage = caches.get(key);\r
if (loadedImage == null) {\r
- loadedImage = super.load(file, param);\r
+ loadedImage = super.load(file, param, colorModel);\r
caches.set(key, loadedImage);\r
}\r
return loadedImage;\r
}\r
}\r
- \r
+\r
+ @Override\r
+ public void close() {\r
+ caches.clear();\r
+ super.close();\r
+ }\r
+\r
public void unlockImages() {\r
caches.unlockImages();\r
}\r
- \r
+\r
}\r
\r
final class ColorConvertedImageKey {\r
- \r
+\r
private final ColorConvertParameter colorConvParameter;\r
- \r
+\r
private final ImageResource imageResource;\r
- \r
+\r
private final long lastModified;\r
- \r
+\r
private final int hashCode;\r
- \r
+\r
public ColorConvertedImageKey(ColorConvertParameter colorConvParameter, ImageResource imageResource) {\r
if (colorConvParameter == null || imageResource == null) {\r
throw new IllegalArgumentException();\r
this.hashCode = imageResource.hashCode()\r
^ colorConvParameter.hashCode() ^ (int) this.lastModified;\r
}\r
- \r
+\r
@Override\r
public int hashCode() {\r
return this.hashCode;\r
}\r
- \r
+\r
@Override\r
public boolean equals(Object obj) {\r
if (obj == this) {\r