aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--assetstudio/.classpath1
-rw-r--r--assetstudio/Android.mk3
-rw-r--r--assetstudio/src/com/android/assetstudiolib/GraphicGenerator.java22
-rw-r--r--eclipse/dictionary.txt1
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/AssetType.java16
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/ConfigureAssetSetPage.java24
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/CreateAssetSetWizardState.java2
7 files changed, 54 insertions, 15 deletions
diff --git a/assetstudio/.classpath b/assetstudio/.classpath
index 53a77a1..986bffa 100644
--- a/assetstudio/.classpath
+++ b/assetstudio/.classpath
@@ -5,5 +5,6 @@
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry combineaccessrules="false" kind="src" path="/common"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
+ <classpathentry kind="var" path="ANDROID_SRC/prebuilts/tools/common/guava-tools/guava-10.0.1.jar" sourcepath="ANDROID_SRC/prebuilts/tools/common/guava-tools/src.zip"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/assetstudio/Android.mk b/assetstudio/Android.mk
index a48c3a0..e55ac55 100644
--- a/assetstudio/Android.mk
+++ b/assetstudio/Android.mk
@@ -21,7 +21,8 @@ LOCAL_JAVA_RESOURCE_DIRS := src
# TODO: Replace common with the batik stuff
LOCAL_JAVA_LIBRARIES := \
- common
+ common \
+ guava-tools
LOCAL_MODULE := assetstudio
diff --git a/assetstudio/src/com/android/assetstudiolib/GraphicGenerator.java b/assetstudio/src/com/android/assetstudiolib/GraphicGenerator.java
index a88618c..91b2d2e 100644
--- a/assetstudio/src/com/android/assetstudiolib/GraphicGenerator.java
+++ b/assetstudio/src/com/android/assetstudiolib/GraphicGenerator.java
@@ -17,6 +17,7 @@
package com.android.assetstudiolib;
import com.android.resources.Density;
+import com.google.common.io.Closeables;
import java.awt.image.BufferedImage;
import java.io.File;
@@ -199,9 +200,14 @@ public abstract class GraphicGenerator {
* @return the image, or null
* @throws IOException if an unexpected I/O error occurs
*/
+ @SuppressWarnings("resource") // Eclipse doesn't know about Closeables#closeQuietly yet
public static BufferedImage getStencilImage(String relativePath) throws IOException {
InputStream is = GraphicGenerator.class.getResourceAsStream(relativePath);
- return ImageIO.read(is);
+ try {
+ return ImageIO.read(is);
+ } finally {
+ Closeables.closeQuietly(is);
+ }
}
/**
@@ -212,10 +218,15 @@ public abstract class GraphicGenerator {
* @return the icon image
* @throws IOException if the image cannot be loaded
*/
+ @SuppressWarnings("resource") // Eclipse doesn't know about Closeables#closeQuietly yet
public static BufferedImage getClipartIcon(String name) throws IOException {
InputStream is = GraphicGenerator.class.getResourceAsStream(
"/images/clipart/small/" + name);
- return ImageIO.read(is);
+ try {
+ return ImageIO.read(is);
+ } finally {
+ Closeables.closeQuietly(is);
+ }
}
/**
@@ -226,10 +237,15 @@ public abstract class GraphicGenerator {
* @return the clip art image
* @throws IOException if the image cannot be loaded
*/
+ @SuppressWarnings("resource") // Eclipse doesn't know about Closeables#closeQuietly yet
public static BufferedImage getClipartImage(String name) throws IOException {
InputStream is = GraphicGenerator.class.getResourceAsStream(
"/images/clipart/big/" + name);
- return ImageIO.read(is);
+ try {
+ return ImageIO.read(is);
+ } finally {
+ Closeables.closeQuietly(is);
+ }
}
/**
diff --git a/eclipse/dictionary.txt b/eclipse/dictionary.txt
index ae582d3..af3d835 100644
--- a/eclipse/dictionary.txt
+++ b/eclipse/dictionary.txt
@@ -46,6 +46,7 @@ clickable
clipart
clipboard
clipboards
+closeables
clueless
codebase
codename
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/AssetType.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/AssetType.java
index 58dd332..3e2bd67 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/AssetType.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/AssetType.java
@@ -21,19 +21,19 @@ package com.android.ide.eclipse.adt.internal.assetstudio;
*/
public enum AssetType {
/** Launcher icon to be shown in the application list */
- LAUNCHER("Launcher Icons", "ic_launcher"), //$NON-NLS-2$
-
- /** Icons shown in menus */
- MENU("Menu Icons", "ic_menu_%s"), //$NON-NLS-2$
+ LAUNCHER("Launcher Icons", "ic_launcher"), //$NON-NLS-2$
/** Icons shown in the action bar */
- ACTIONBAR("Action Bar Icons (Android 3.0+)", "ic_action_%s"), //$NON-NLS-2$
+ ACTIONBAR("Action Bar and Tab Icons (Android 3.0+)", "ic_action_%s"), //$NON-NLS-2$
+
+ /** Icons shown in a notification message */
+ NOTIFICATION("Notification Icons", "ic_stat_%s"), //$NON-NLS-2$
/** Icons shown as part of tabs */
- TAB("Tab Icons", "ic_tab_%s"), //$NON-NLS-2$
+ TAB("Pre-Android 3.0 Tab Icons", "ic_tab_%s"), //$NON-NLS-2$
- /** Icons shown in a notification message */
- NOTIFICATION("Notification Icons", "ic_stat_%s"); //$NON-NLS-2$
+ /** Icons shown in menus */
+ MENU("Pre-Android 3.0 Menu Icons", "ic_menu_%s"); //$NON-NLS-2$
/** Display name to show to the user in the asset type selection list */
private final String mDisplayName;
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/ConfigureAssetSetPage.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/ConfigureAssetSetPage.java
index 457f093..3cc4697 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/ConfigureAssetSetPage.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/ConfigureAssetSetPage.java
@@ -538,6 +538,8 @@ public class ConfigureAssetSetPage extends WizardPage implements SelectionListen
//updateColor(display, new RGB(0xa4, 0xc6, 0x39), true /*background*/);
updateColor(display, mValues.background, true /*background*/);
updateColor(display, mValues.foreground, false /*background*/);
+
+ updateTrimOptions();
} finally {
mIgnore = false;
}
@@ -565,6 +567,20 @@ public class ConfigureAssetSetPage extends WizardPage implements SelectionListen
}
}
+ private void updateTrimOptions() {
+ // Trimming and padding is not available for clipart images; padding etc is
+ // predefined to work well with action bar icons
+ if (mValues.sourceType == SourceType.CLIPART
+ && mValues.type == AssetType.ACTIONBAR) {
+ mTrimCheckBox.setEnabled(false);
+ mPaddingSlider.setEnabled(false);
+ mValues.trim = false;
+ } else if (!mTrimCheckBox.isEnabled()) {
+ mTrimCheckBox.setEnabled(true);
+ mPaddingSlider.setEnabled(true);
+ }
+ }
+
private boolean validatePage() {
String error = null;
//String warning = null;
@@ -651,16 +667,19 @@ public class ConfigureAssetSetPage extends WizardPage implements SelectionListen
mValues.sourceType = CreateAssetSetWizardState.SourceType.IMAGE;
chooseForegroundTab((Button) source, mImageForm);
configureAssetType(mValues.type);
+ updateTrimOptions();
} else if (source == mClipartRadio) {
mValues.sourceType = CreateAssetSetWizardState.SourceType.CLIPART;
chooseForegroundTab((Button) source, mClipartForm);
configureAssetType(mValues.type);
+ updateTrimOptions();
} else if (source == mTextRadio) {
mValues.sourceType = CreateAssetSetWizardState.SourceType.TEXT;
updateFontLabel();
chooseForegroundTab((Button) source, mTextForm);
configureAssetType(mValues.type);
mText.setFocus();
+ updateTrimOptions();
}
// Choose image file
@@ -1043,7 +1062,8 @@ public class ConfigureAssetSetPage extends WizardPage implements SelectionListen
try {
sourceImage = GraphicGenerator.getClipartImage(mValues.clipartName);
- if (trim) {
+ boolean isActionBar = mValues.type == AssetType.ACTIONBAR;
+ if (trim && !isActionBar) {
sourceImage = ImageUtils.cropBlank(sourceImage, null, TYPE_INT_ARGB);
}
@@ -1055,7 +1075,7 @@ public class ConfigureAssetSetPage extends WizardPage implements SelectionListen
}
int padding = mValues.padding;
- if (padding != 0) {
+ if (padding != 0 && !isActionBar) {
sourceImage = Util.paddedImage(sourceImage, padding);
}
} catch (IOException e) {
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/CreateAssetSetWizardState.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/CreateAssetSetWizardState.java
index 94bc4d3..d3a0f42 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/CreateAssetSetWizardState.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/assetstudio/CreateAssetSetWizardState.java
@@ -64,7 +64,7 @@ public class CreateAssetSetWizardState implements GraphicGeneratorContext {
public IProject project;
/** Whether empty space around the source image should be trimmed */
- public boolean trim;
+ public boolean trim = true;
/** The type of source the icon is being created from */
public SourceType sourceType = SourceType.TEXT;