diff options
author | Alex Sakhartchouk <alexst@google.com> | 2010-10-11 12:35:15 -0700 |
---|---|---|
committer | Alex Sakhartchouk <alexst@google.com> | 2010-10-11 14:04:09 -0700 |
commit | 26ae3904e8050eae655722caf93ee5d3f0ab195a (patch) | |
tree | 9dfbe324379dd9ea0067011fa85a62a348a66961 /graphics | |
parent | 3e6fee857a317d35b4861b8bb24a2d3e5e3e6fc2 (diff) | |
download | frameworks_base-26ae3904e8050eae655722caf93ee5d3f0ab195a.zip frameworks_base-26ae3904e8050eae655722caf93ee5d3f0ab195a.tar.gz frameworks_base-26ae3904e8050eae655722caf93ee5d3f0ab195a.tar.bz2 |
Update allocation from bitmap.
GL attribute cleanup in type.
Change-Id: I504dcf6744ad13d65e068e784b6608c999ab48c6
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/java/android/renderscript/Allocation.java | 12 | ||||
-rw-r--r-- | graphics/java/android/renderscript/RenderScript.java | 4 | ||||
-rw-r--r-- | graphics/jni/android_renderscript_RenderScript.cpp | 18 |
3 files changed, 34 insertions, 0 deletions
diff --git a/graphics/java/android/renderscript/Allocation.java b/graphics/java/android/renderscript/Allocation.java index 06bfbcf..6c08ce5 100644 --- a/graphics/java/android/renderscript/Allocation.java +++ b/graphics/java/android/renderscript/Allocation.java @@ -90,6 +90,18 @@ public class Allocation extends BaseObj { subData1D(0, mType.getElementCount(), d); } + public void updateFromBitmap(Bitmap b) + throws IllegalArgumentException { + + mRS.validate(); + if(mType.getX() != b.getWidth() || + mType.getY() != b.getHeight()) { + throw new IllegalArgumentException("Cannot update allocation from bitmap, sizes mismatch"); + } + + mRS.nAllocationUpdateFromBitmap(mID, b); + } + public void subData(int xoff, FieldPacker fp) { int eSize = mType.mElement.getSizeBytes(); final byte[] data = fp.getData(); diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java index 8ad54c9..2774fea 100644 --- a/graphics/java/android/renderscript/RenderScript.java +++ b/graphics/java/android/renderscript/RenderScript.java @@ -186,6 +186,10 @@ public class RenderScript { synchronized int nAllocationCreateTyped(int type) { return rsnAllocationCreateTyped(mContext, type); } + native void rsnAllocationUpdateFromBitmap(int con, int alloc, Bitmap bmp); + synchronized void nAllocationUpdateFromBitmap(int alloc, Bitmap bmp) { + rsnAllocationUpdateFromBitmap(mContext, alloc, bmp); + } native int rsnAllocationCreateFromBitmap(int con, int dstFmt, boolean genMips, Bitmap bmp); synchronized int nAllocationCreateFromBitmap(int dstFmt, boolean genMips, Bitmap bmp) { return rsnAllocationCreateFromBitmap(mContext, dstFmt, genMips, bmp); diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp index 586d7e9..014f03b 100644 --- a/graphics/jni/android_renderscript_RenderScript.cpp +++ b/graphics/jni/android_renderscript_RenderScript.cpp @@ -423,6 +423,23 @@ nAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint dst return 0; } +static void +nAllocationUpdateFromBitmap(JNIEnv *_env, jobject _this, RsContext con, jint alloc, jobject jbitmap) +{ + SkBitmap const * nativeBitmap = + (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID); + const SkBitmap& bitmap(*nativeBitmap); + SkBitmap::Config config = bitmap.getConfig(); + + RsElement e = SkBitmapToPredefined(config); + if (e) { + bitmap.lockPixels(); + const void* ptr = bitmap.getPixels(); + rsAllocationUpdateFromBitmap(con, (RsAllocation)alloc, e, ptr); + bitmap.unlockPixels(); + } +} + static void ReleaseBitmapCallback(void *bmp) { SkBitmap const * nativeBitmap = (SkBitmap const *)bmp; @@ -1234,6 +1251,7 @@ static JNINativeMethod methods[] = { {"rsnTypeGetNativeData", "(II[I)V", (void*)nTypeGetNativeData }, {"rsnAllocationCreateTyped", "(II)I", (void*)nAllocationCreateTyped }, +{"rsnAllocationUpdateFromBitmap", "(IILandroid/graphics/Bitmap;)V", (void*)nAllocationUpdateFromBitmap }, {"rsnAllocationCreateFromBitmap", "(IIZLandroid/graphics/Bitmap;)I", (void*)nAllocationCreateFromBitmap }, {"rsnAllocationCreateBitmapRef", "(IILandroid/graphics/Bitmap;)I", (void*)nAllocationCreateBitmapRef }, {"rsnAllocationCreateFromAssetStream","(IIZI)I", (void*)nAllocationCreateFromAssetStream }, |