aboutsummaryrefslogtreecommitdiffstats
path: root/assetstudio/src/com
diff options
context:
space:
mode:
Diffstat (limited to 'assetstudio/src/com')
-rw-r--r--assetstudio/src/com/android/assetstudiolib/GraphicGenerator.java80
1 files changed, 80 insertions, 0 deletions
diff --git a/assetstudio/src/com/android/assetstudiolib/GraphicGenerator.java b/assetstudio/src/com/android/assetstudiolib/GraphicGenerator.java
index e53f0ab..902b21d 100644
--- a/assetstudio/src/com/android/assetstudiolib/GraphicGenerator.java
+++ b/assetstudio/src/com/android/assetstudiolib/GraphicGenerator.java
@@ -19,8 +19,19 @@ package com.android.assetstudiolib;
import com.android.resources.Density;
import java.awt.image.BufferedImage;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.security.ProtectionDomain;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.jar.JarFile;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
import javax.imageio.ImageIO;
@@ -49,4 +60,73 @@ public class GraphicGenerator {
InputStream is = GraphicGenerator.class.getResourceAsStream(relativePath);
return ImageIO.read(is);
}
+
+ /**
+ * Returns the icon (32x32) for a given clip art image.
+ *
+ * @param name the name of the image to be loaded (which can be looked up via
+ * {@link #getClipartNames()})
+ * @return the icon image
+ * @throws IOException if the image cannot be loaded
+ */
+ public static BufferedImage getClipartIcon(String name) throws IOException {
+ InputStream is = GraphicGenerator.class.getResourceAsStream(
+ "/images/clipart/small/" + name);
+ return ImageIO.read(is);
+ }
+
+ /**
+ * Returns the full size clip art image for a given image name.
+ *
+ * @param name the name of the image to be loaded (which can be looked up via
+ * {@link #getClipartNames()})
+ * @return the clip art image
+ * @throws IOException if the image cannot be loaded
+ */
+ public static BufferedImage getClipartImage(String name) throws IOException {
+ InputStream is = GraphicGenerator.class.getResourceAsStream(
+ "/images/clipart/big/" + name);
+ return ImageIO.read(is);
+ }
+
+ /**
+ * Returns the names of available clip art images which can be obtained by passing the
+ * name to {@link #getClipartIcon(String)} or
+ * {@link GraphicGenerator#getClipartImage(String)}
+ *
+ * @return an iterator for the available image names
+ */
+ public static Iterator<String> getClipartNames() {
+ List<String> names = new ArrayList<String>(80);
+ try {
+ String pathPrefix = "images/clipart/big/"; //$NON-NLS-1$
+ ProtectionDomain protectionDomain = GraphicGenerator.class.getProtectionDomain();
+ URL url = protectionDomain.getCodeSource().getLocation();
+ File file;
+ try {
+ file = new File(url.toURI());
+ } catch (URISyntaxException e) {
+ file = new File(url.getPath());
+ }
+ final ZipFile zipFile = new JarFile(file);
+ Enumeration<? extends ZipEntry> enumeration = zipFile.entries();
+ while (enumeration.hasMoreElements()) {
+ ZipEntry zipEntry = enumeration.nextElement();
+ String name = zipEntry.getName();
+ if (!name.startsWith(pathPrefix) || !name.endsWith(".png")) { //$NON-NLS-1$
+ continue;
+ }
+
+ int lastSlash = name.lastIndexOf('/');
+ if (lastSlash != -1) {
+ name = name.substring(lastSlash + 1);
+ }
+ names.add(name);
+ }
+ } catch (final Exception e) {
+ e.printStackTrace();
+ }
+
+ return names.iterator();
+ }
}