diff options
Diffstat (limited to 'graphics/java/android/renderscript')
-rw-r--r-- | graphics/java/android/renderscript/Allocation.java | 37 | ||||
-rw-r--r-- | graphics/java/android/renderscript/RenderScript.java | 9 |
2 files changed, 32 insertions, 14 deletions
diff --git a/graphics/java/android/renderscript/Allocation.java b/graphics/java/android/renderscript/Allocation.java index 3001c743..536f71c 100644 --- a/graphics/java/android/renderscript/Allocation.java +++ b/graphics/java/android/renderscript/Allocation.java @@ -16,19 +16,15 @@ package android.renderscript; -import java.lang.reflect.Field; -import java.lang.reflect.Array; - import java.io.IOException; import java.io.InputStream; import android.content.res.Resources; +import android.content.res.AssetManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; -import android.os.Bundle; -import android.renderscript.Type; -import android.util.Config; import android.util.Log; +import android.util.TypedValue; /** * @hide @@ -52,7 +48,7 @@ public class Allocation extends BaseObj { } public void data(int[] d) { - int size = 0; + int size; if(mType != null && mType.mElement != null) { size = mType.mElement.mSize; for(int ct=0; ct < mType.mValues.length; ct++) { @@ -71,7 +67,7 @@ public class Allocation extends BaseObj { } public void data(float[] d) { - int size = 0; + int size; if(mType != null && mType.mElement != null) { size = mType.mElement.mSize; for(int ct=0; ct < mType.mValues.length; ct++) { @@ -245,8 +241,29 @@ public class Allocation extends BaseObj { static public Allocation createFromBitmapResource(RenderScript rs, Resources res, int id, Element dstFmt, boolean genMips) throws IllegalArgumentException { - Bitmap b = BitmapFactory.decodeResource(res, id, mBitmapOptions); - return createFromBitmap(rs, b, dstFmt, genMips); + InputStream is = null; + try { + final TypedValue value = new TypedValue(); + is = res.openRawResource(id, value); + + int asset = ((AssetManager.AssetInputStream) is).getAssetInt(); + int allocationId = rs.nAllocationCreateFromAssetStream(dstFmt.mPredefinedID, genMips, + asset); + + return new Allocation(allocationId, rs, null); + } catch (Exception e) { + // Ignore + } finally { + if (is != null) { + try { + is.close(); + } catch (IOException e) { + // Ignore + } + } + } + + return null; } static public Allocation createFromBitmapResourceBoxed(RenderScript rs, Resources res, int id, Element dstFmt, boolean genMips) diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java index ee7b702..0f188f6 100644 --- a/graphics/java/android/renderscript/RenderScript.java +++ b/graphics/java/android/renderscript/RenderScript.java @@ -16,13 +16,10 @@ package android.renderscript; -import java.io.IOException; -import java.io.InputStream; import java.lang.reflect.Field; -import android.content.res.Resources; import android.graphics.Bitmap; -import android.renderscript.Type; +import android.graphics.BitmapFactory; import android.util.Config; import android.util.Log; import android.view.Surface; @@ -35,6 +32,7 @@ import android.view.Surface; public class RenderScript { static final String LOG_TAG = "libRS_jni"; private static final boolean DEBUG = false; + @SuppressWarnings({"UnusedDeclaration", "deprecation"}) private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV; @@ -43,6 +41,7 @@ public class RenderScript { * We use a class initializer to allow the native code to cache some * field offsets. */ + @SuppressWarnings({"FieldCanBeLocal", "UnusedDeclaration"}) private static boolean sInitialized; native private static void _nInit(); @@ -95,6 +94,7 @@ public class RenderScript { native int nAllocationCreateSized(int elem, int count); native int nAllocationCreateFromBitmap(int dstFmt, boolean genMips, Bitmap bmp); native int nAllocationCreateFromBitmapBoxed(int dstFmt, boolean genMips, Bitmap bmp); + native int nAllocationCreateFromAssetStream(int dstFmt, boolean genMips, int assetStream); native void nAllocationUploadToTexture(int alloc, int baseMioLevel); native void nAllocationUploadToBufferObject(int alloc); @@ -188,6 +188,7 @@ public class RenderScript { private int mDev; private int mContext; + @SuppressWarnings({"FieldCanBeLocal"}) private Surface mSurface; private static boolean mElementsInitialized = false; |