OSDN Git Service

ImageCacheのキャッシュ状況をMBeanによりリアルタイムにチェック可能にした。
[charactermanaj/CharacterManaJ.git] / src / charactermanaj / graphics / ColorConvertedImageCachedLoader.java
index 8c7c78a..814fa5a 100644 (file)
@@ -2,6 +2,7 @@ package charactermanaj.graphics;
 \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
@@ -19,18 +20,19 @@ import charactermanaj.graphics.io.LoadedImage;
 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
@@ -42,33 +44,39 @@ public class ColorConvertedImageCachedLoader extends ColorConvertedImageLoaderIm
                        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
@@ -79,12 +87,12 @@ final class ColorConvertedImageKey {
                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