From 36ba1a2da9c08dac2655a3481b89b9633773f9b3 Mon Sep 17 00:00:00 2001 From: GiWoong Kim Date: Fri, 23 Aug 2013 19:08:22 +0900 Subject: [PATCH] skin: ImageRegistry refactoring and added blank-guide image loading Change-Id: Idcf8880664f4a351c377ed1c6f3c0ef3df14b6dd Signed-off-by: GiWoong Kim --- .../emulator/skin/image/ImageRegistry.java | 170 +++++++++++------- 1 file changed, 109 insertions(+), 61 deletions(-) diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/image/ImageRegistry.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/image/ImageRegistry.java index 53434b3dd0..06ec76a3b3 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/image/ImageRegistry.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/image/ImageRegistry.java @@ -56,7 +56,7 @@ import org.tizen.emulator.skin.util.SkinRotation; * */ public class ImageRegistry { - public static final String ICON_FOLDER = "icons"; + public static final String ICONS_FOLDER = "icons"; public static final String IMAGES_FOLDER = "images"; public static final String KEYWINDOW_FOLDER = "key-window"; @@ -68,6 +68,21 @@ public class ImageRegistry { IMG_TYPE_PRESSED } + public enum ResourceImageName { + RESOURCE_ABOUT("about_Tizen_SDK.png"), + RESOURCE_BLANK_GUIDE("blank-guide.png"); + + private String name; + + private ResourceImageName(String name) { + this.name = name; + } + + public String getName() { + return this.name; + } + } + public enum IconName { DETAIL_INFO("detail_info.png"), ROTATE("rotate.png"), @@ -100,7 +115,6 @@ public class ImageRegistry { public String getName() { return this.name; } - } public enum KeyWindowImageName { @@ -131,8 +145,9 @@ public class ImageRegistry { private Display display; private EmulatorUI dbiContents; + private Map resourceImageMap; + private Map iconImageMap; private Map skinImageMap; - private Map iconMap; private Map keyWindowImageMap; private String skinPath; @@ -162,15 +177,16 @@ public class ImageRegistry { this.skinPath = skinPath; this.dbiContents = config.getDbiContents(); + + this.resourceImageMap = new HashMap(); + this.iconImageMap = new HashMap(); this.skinImageMap = new HashMap(); - this.iconMap = new HashMap(); this.keyWindowImageMap = new HashMap(); init(this.skinPath); } private void init(String argSkinPath) { - RotationsType rotations = dbiContents.getRotations(); if (null == rotations) { @@ -183,11 +199,13 @@ public class ImageRegistry { for (RotationType rotation : rotationList) { SkinRotation.put(rotation); } + } + private String makeKey(Short id, ImageType imageType) { + return id + ":" + imageType.ordinal(); } public ImageData getSkinImageData(Short id, ImageType imageType) { - Image image = skinImageMap.get(makeKey(id, imageType)); if (null != image) { @@ -231,123 +249,153 @@ public class ImageRegistry { if (null != registeredImage) { return registeredImage.getImageData(); - } else { - return null; } - } - } - private String makeKey(Short id, ImageType imageType) { - return id + ":" + imageType.ordinal(); + return null; } - public Image getIcon(IconName name) { + public Image getResourceImage(ResourceImageName name) { + String imageName = name.getName(); + Image image = resourceImageMap.get(imageName); - if (0 != iconMap.size()) { - Image image = iconMap.get(name.getName()); + if (image == null) { + ClassLoader classLoader = this.getClass().getClassLoader(); + InputStream is = null; - return image; - } else { + String resourcePath = IMAGES_FOLDER + "/" + imageName; - // load all of the icons at once. + try { + is = classLoader.getResourceAsStream(resourcePath); + if (null != is) { + logger.info("resource image is loaded"); + resourceImageMap.put(imageName, new Image(display, is)); + } else { + logger.severe("missing image : " + resourcePath); + } + } finally { + IOUtil.close(is); + } - ClassLoader classLoader = this.getClass().getClassLoader(); - IconName[] values = IconName.values(); + image = resourceImageMap.get(imageName); + if (image != null) { + logger.info("resource " + imageName + " size : " + + image.getImageData().width + "x" + + image.getImageData().height); + } + } - for (IconName iconName : values) { + return image; + } - String icoNname = iconName.getName(); + public Image getIcon(IconName name) { + if (iconImageMap.size() == 0) { + /* load all of the icons at once */ + ClassLoader classLoader = this.getClass().getClassLoader(); + InputStream is = null; + String imageName, imagePath; - String iconPath = ICON_FOLDER + "/" + icoNname; + IconName[] values = IconName.values(); + for (IconName iconName : values) { + imageName = iconName.getName(); + imagePath = ICONS_FOLDER + "/" + imageName; - InputStream is = null; try { - is = classLoader.getResourceAsStream(iconPath); + is = classLoader.getResourceAsStream(imagePath); if (null != is) { - logger.fine("load icon:" + iconPath); - iconMap.put(icoNname, new Image(display, is)); + logger.fine("icon is loaded : " + imagePath); + iconImageMap.put(imageName, new Image(display, is)); } else { - logger.severe("missing icon:" + iconPath); + logger.severe("missing icon : " + imagePath); } } finally { IOUtil.close(is); } - } - - return iconMap.get(name.getName()); } + + return iconImageMap.get(name.getName()); } public Image getKeyWindowImageData(KeyWindowImageName name) { - if (0 != keyWindowImageMap.size()) { - Image image = keyWindowImageMap.get(name.getName()); - - return image; - } else { + if (keyWindowImageMap.size() == 0) { + /* load all of the images at once */ ClassLoader classLoader = this.getClass().getClassLoader(); - KeyWindowImageName[] values = KeyWindowImageName.values(); + InputStream is = null; + String imageName, imagePath; + KeyWindowImageName[] values = KeyWindowImageName.values(); for (KeyWindowImageName value : values) { - - String imageName = value.getName(); - - String imagePath = IMAGES_FOLDER + "/" + + imageName = value.getName(); + imagePath = IMAGES_FOLDER + "/" + KEYWINDOW_FOLDER + "/" + imageName; - InputStream is = null; try { is = classLoader.getResourceAsStream(imagePath); if (null != is) { - logger.fine("load keywindow images:" + imagePath); + logger.fine("KeyWindow image is loaded : " + imagePath); keyWindowImageMap.put(imageName, new Image(display, is)); } else { - logger.severe("missing image:" + imagePath); + logger.severe("missing image : " + imagePath); } } finally { IOUtil.close(is); } - } - - return keyWindowImageMap.get(name.getName()); } + + return keyWindowImageMap.get(name.getName()); } public void dispose() { - /* skin image */ - if (null != skinImageMap) { - Collection images = skinImageMap.values(); + Collection images = null; + Iterator imageIterator = null; + Image image = null; - Iterator imageIterator = images.iterator(); + /* resource */ + if (null != resourceImageMap) { + images = resourceImageMap.values(); + + imageIterator = images.iterator(); while (imageIterator.hasNext()) { - Image image = imageIterator.next(); + image = imageIterator.next(); image.dispose(); } } /* icon */ - if (null != iconMap) { - Collection icons = iconMap.values(); + if (null != iconImageMap) { + images = iconImageMap.values(); + + imageIterator = images.iterator(); + + while (imageIterator.hasNext()) { + image = imageIterator.next(); + image.dispose(); + } + } + + /* skin image */ + if (null != skinImageMap) { + images = skinImageMap.values(); - Iterator iconIterator = icons.iterator(); + imageIterator = images.iterator(); - while (iconIterator.hasNext()) { - Image image = iconIterator.next(); + while (imageIterator.hasNext()) { + image = imageIterator.next(); image.dispose(); } } /* key window image */ if (null != keyWindowImageMap) { - Collection images = keyWindowImageMap.values(); + images = keyWindowImageMap.values(); - Iterator imagesIterator = images.iterator(); + imageIterator = images.iterator(); - while (imagesIterator.hasNext()) { - Image image = imagesIterator.next(); + while (imageIterator.hasNext()) { + image = imageIterator.next(); image.dispose(); } } -- 2.34.1