Loading core/jni/android/graphics/Bitmap.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -236,7 +236,7 @@ static jobject Bitmap_creator(JNIEnv* env, jobject, jintArray jColors, 0, 0, width, height, bitmap); } return GraphicsJNI::createBitmap(env, new SkBitmap(bitmap), buff, isMutable, NULL); return GraphicsJNI::createBitmap(env, new SkBitmap(bitmap), buff, isMutable, NULL, NULL); } static jobject Bitmap_copy(JNIEnv* env, jobject, const SkBitmap* src, Loading @@ -248,7 +248,7 @@ static jobject Bitmap_copy(JNIEnv* env, jobject, const SkBitmap* src, return NULL; } return GraphicsJNI::createBitmap(env, new SkBitmap(result), allocator.getStorageObj(), isMutable, NULL); return GraphicsJNI::createBitmap(env, new SkBitmap(result), allocator.getStorageObj(), isMutable, NULL, NULL); } static void Bitmap_destructor(JNIEnv* env, jobject, SkBitmap* bitmap) { Loading Loading @@ -407,7 +407,7 @@ static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) { bitmap->unlockPixels(); blob.release(); return GraphicsJNI::createBitmap(env, bitmap, buffer, isMutable, NULL, density); return GraphicsJNI::createBitmap(env, bitmap, buffer, isMutable, NULL, NULL, density); } static jboolean Bitmap_writeToParcel(JNIEnv* env, jobject, Loading Loading @@ -485,7 +485,7 @@ static jobject Bitmap_extractAlpha(JNIEnv* env, jobject clazz, env->ReleaseIntArrayElements(offsetXY, array, 0); } return GraphicsJNI::createBitmap(env, dst, allocator.getStorageObj(), true, NULL); return GraphicsJNI::createBitmap(env, dst, allocator.getStorageObj(), true, NULL, NULL); } /////////////////////////////////////////////////////////////////////////////// Loading core/jni/android/graphics/BitmapFactory.cpp +17 −4 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ jfieldID gOptions_mimeFieldID; jfieldID gOptions_mCancelID; jfieldID gOptions_bitmapFieldID; jfieldID gBitmap_nativeBitmapFieldID; jfieldID gBitmap_layoutBoundsFieldID; #if 0 #define TRACE_BITMAP(code) code Loading Loading @@ -276,7 +277,7 @@ static jobject doDecode(JNIEnv* env, SkStream* stream, jobject padding, } jbyteArray ninePatchChunk = NULL; if (peeker.fPatchIsValid) { if (peeker.fPatch != NULL) { if (willScale) { scaleNinePatchChunk(peeker.fPatch, scale); } Loading @@ -296,6 +297,18 @@ static jobject doDecode(JNIEnv* env, SkStream* stream, jobject padding, env->ReleasePrimitiveArrayCritical(ninePatchChunk, array, 0); } jintArray layoutBounds = NULL; if (peeker.fLayoutBounds != NULL) { layoutBounds = env->NewIntArray(4); if (layoutBounds == NULL) { return nullObjectReturn("layoutBounds == null"); } env->SetIntArrayRegion(layoutBounds, 0, 4, (jint*) peeker.fLayoutBounds); if (javaBitmap != NULL) { env->SetObjectField(javaBitmap, gBitmap_layoutBoundsFieldID, layoutBounds); } } // detach bitmap from its autodeleter, since we want to own it now adb.detach(); Loading @@ -321,7 +334,7 @@ static jobject doDecode(JNIEnv* env, SkStream* stream, jobject padding, } if (padding) { if (peeker.fPatchIsValid) { if (peeker.fPatch != NULL) { GraphicsJNI::set_jrect(env, padding, peeker.fPatch->paddingLeft, peeker.fPatch->paddingTop, peeker.fPatch->paddingRight, peeker.fPatch->paddingBottom); Loading Loading @@ -350,7 +363,7 @@ static jobject doDecode(JNIEnv* env, SkStream* stream, jobject padding, } // now create the java bitmap return GraphicsJNI::createBitmap(env, bitmap, javaAllocator.getStorageObj(), isMutable, ninePatchChunk); isMutable, ninePatchChunk, layoutBounds, -1); } static jobject nativeDecodeStreamScaled(JNIEnv* env, jobject clazz, jobject is, jbyteArray storage, Loading Loading @@ -576,7 +589,7 @@ int register_android_graphics_BitmapFactory(JNIEnv* env) { jclass bitmap_class = env->FindClass("android/graphics/Bitmap"); SkASSERT(bitmap_class); gBitmap_nativeBitmapFieldID = getFieldIDCheck(env, bitmap_class, "mNativeBitmap", "I"); gBitmap_layoutBoundsFieldID = getFieldIDCheck(env, bitmap_class, "mLayoutBounds", "[I"); int ret = AndroidRuntime::registerNativeMethods(env, "android/graphics/BitmapFactory$Options", gOptionsMethods, Loading core/jni/android/graphics/BitmapRegionDecoder.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -244,7 +244,7 @@ static jobject nativeDecodeRegion(JNIEnv* env, jobject, SkBitmapRegionDecoder *b JavaPixelAllocator* allocator = (JavaPixelAllocator*) decoder->getAllocator(); jbyteArray buff = allocator->getStorageObjAndReset(); return GraphicsJNI::createBitmap(env, bitmap, buff, false, NULL, -1); return GraphicsJNI::createBitmap(env, bitmap, buff, false, NULL, NULL, -1); } static int nativeGetHeight(JNIEnv* env, jobject, SkBitmapRegionDecoder *brd) { Loading core/jni/android/graphics/Graphics.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -345,14 +345,14 @@ SkRegion* GraphicsJNI::getNativeRegion(JNIEnv* env, jobject region) /////////////////////////////////////////////////////////////////////////////////////////// jobject GraphicsJNI::createBitmap(JNIEnv* env, SkBitmap* bitmap, jbyteArray buffer, bool isMutable, jbyteArray ninepatch, int density) bool isMutable, jbyteArray ninepatch, jintArray layoutbounds, int density) { SkASSERT(bitmap); SkASSERT(bitmap->pixelRef()); jobject obj = env->NewObject(gBitmap_class, gBitmap_constructorMethodID, static_cast<jint>(reinterpret_cast<uintptr_t>(bitmap)), buffer, isMutable, ninepatch, density); buffer, isMutable, ninepatch, layoutbounds, density); hasException(env); // For the side effect of logging. return obj; } Loading @@ -360,7 +360,7 @@ jobject GraphicsJNI::createBitmap(JNIEnv* env, SkBitmap* bitmap, jbyteArray buff jobject GraphicsJNI::createBitmap(JNIEnv* env, SkBitmap* bitmap, bool isMutable, jbyteArray ninepatch, int density) { return createBitmap(env, bitmap, NULL, isMutable, ninepatch, density); return createBitmap(env, bitmap, NULL, isMutable, ninepatch, NULL, density); } Loading Loading @@ -587,7 +587,7 @@ int register_android_graphics_Graphics(JNIEnv* env) gBitmap_class = make_globalref(env, "android/graphics/Bitmap"); gBitmap_nativeInstanceID = getFieldIDCheck(env, gBitmap_class, "mNativeBitmap", "I"); gBitmap_constructorMethodID = env->GetMethodID(gBitmap_class, "<init>", "(I[BZ[BI)V"); "(I[BZ[B[II)V"); gBitmapRegionDecoder_class = make_globalref(env, "android/graphics/BitmapRegionDecoder"); gBitmapRegionDecoder_constructorMethodID = env->GetMethodID(gBitmapRegionDecoder_class, "<init>", "(I)V"); Loading core/jni/android/graphics/GraphicsJNI.h +2 −1 Original line number Diff line number Diff line Loading @@ -53,7 +53,8 @@ public: storage array (may be null). */ static jobject createBitmap(JNIEnv* env, SkBitmap* bitmap, jbyteArray buffer, bool isMutable, jbyteArray ninepatch, int density = -1); bool isMutable, jbyteArray ninepatch, jintArray layoutbounds, int density = -1); static jobject createBitmap(JNIEnv* env, SkBitmap* bitmap, bool isMutable, jbyteArray ninepatch, int density = -1); Loading Loading
core/jni/android/graphics/Bitmap.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -236,7 +236,7 @@ static jobject Bitmap_creator(JNIEnv* env, jobject, jintArray jColors, 0, 0, width, height, bitmap); } return GraphicsJNI::createBitmap(env, new SkBitmap(bitmap), buff, isMutable, NULL); return GraphicsJNI::createBitmap(env, new SkBitmap(bitmap), buff, isMutable, NULL, NULL); } static jobject Bitmap_copy(JNIEnv* env, jobject, const SkBitmap* src, Loading @@ -248,7 +248,7 @@ static jobject Bitmap_copy(JNIEnv* env, jobject, const SkBitmap* src, return NULL; } return GraphicsJNI::createBitmap(env, new SkBitmap(result), allocator.getStorageObj(), isMutable, NULL); return GraphicsJNI::createBitmap(env, new SkBitmap(result), allocator.getStorageObj(), isMutable, NULL, NULL); } static void Bitmap_destructor(JNIEnv* env, jobject, SkBitmap* bitmap) { Loading Loading @@ -407,7 +407,7 @@ static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) { bitmap->unlockPixels(); blob.release(); return GraphicsJNI::createBitmap(env, bitmap, buffer, isMutable, NULL, density); return GraphicsJNI::createBitmap(env, bitmap, buffer, isMutable, NULL, NULL, density); } static jboolean Bitmap_writeToParcel(JNIEnv* env, jobject, Loading Loading @@ -485,7 +485,7 @@ static jobject Bitmap_extractAlpha(JNIEnv* env, jobject clazz, env->ReleaseIntArrayElements(offsetXY, array, 0); } return GraphicsJNI::createBitmap(env, dst, allocator.getStorageObj(), true, NULL); return GraphicsJNI::createBitmap(env, dst, allocator.getStorageObj(), true, NULL, NULL); } /////////////////////////////////////////////////////////////////////////////// Loading
core/jni/android/graphics/BitmapFactory.cpp +17 −4 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ jfieldID gOptions_mimeFieldID; jfieldID gOptions_mCancelID; jfieldID gOptions_bitmapFieldID; jfieldID gBitmap_nativeBitmapFieldID; jfieldID gBitmap_layoutBoundsFieldID; #if 0 #define TRACE_BITMAP(code) code Loading Loading @@ -276,7 +277,7 @@ static jobject doDecode(JNIEnv* env, SkStream* stream, jobject padding, } jbyteArray ninePatchChunk = NULL; if (peeker.fPatchIsValid) { if (peeker.fPatch != NULL) { if (willScale) { scaleNinePatchChunk(peeker.fPatch, scale); } Loading @@ -296,6 +297,18 @@ static jobject doDecode(JNIEnv* env, SkStream* stream, jobject padding, env->ReleasePrimitiveArrayCritical(ninePatchChunk, array, 0); } jintArray layoutBounds = NULL; if (peeker.fLayoutBounds != NULL) { layoutBounds = env->NewIntArray(4); if (layoutBounds == NULL) { return nullObjectReturn("layoutBounds == null"); } env->SetIntArrayRegion(layoutBounds, 0, 4, (jint*) peeker.fLayoutBounds); if (javaBitmap != NULL) { env->SetObjectField(javaBitmap, gBitmap_layoutBoundsFieldID, layoutBounds); } } // detach bitmap from its autodeleter, since we want to own it now adb.detach(); Loading @@ -321,7 +334,7 @@ static jobject doDecode(JNIEnv* env, SkStream* stream, jobject padding, } if (padding) { if (peeker.fPatchIsValid) { if (peeker.fPatch != NULL) { GraphicsJNI::set_jrect(env, padding, peeker.fPatch->paddingLeft, peeker.fPatch->paddingTop, peeker.fPatch->paddingRight, peeker.fPatch->paddingBottom); Loading Loading @@ -350,7 +363,7 @@ static jobject doDecode(JNIEnv* env, SkStream* stream, jobject padding, } // now create the java bitmap return GraphicsJNI::createBitmap(env, bitmap, javaAllocator.getStorageObj(), isMutable, ninePatchChunk); isMutable, ninePatchChunk, layoutBounds, -1); } static jobject nativeDecodeStreamScaled(JNIEnv* env, jobject clazz, jobject is, jbyteArray storage, Loading Loading @@ -576,7 +589,7 @@ int register_android_graphics_BitmapFactory(JNIEnv* env) { jclass bitmap_class = env->FindClass("android/graphics/Bitmap"); SkASSERT(bitmap_class); gBitmap_nativeBitmapFieldID = getFieldIDCheck(env, bitmap_class, "mNativeBitmap", "I"); gBitmap_layoutBoundsFieldID = getFieldIDCheck(env, bitmap_class, "mLayoutBounds", "[I"); int ret = AndroidRuntime::registerNativeMethods(env, "android/graphics/BitmapFactory$Options", gOptionsMethods, Loading
core/jni/android/graphics/BitmapRegionDecoder.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -244,7 +244,7 @@ static jobject nativeDecodeRegion(JNIEnv* env, jobject, SkBitmapRegionDecoder *b JavaPixelAllocator* allocator = (JavaPixelAllocator*) decoder->getAllocator(); jbyteArray buff = allocator->getStorageObjAndReset(); return GraphicsJNI::createBitmap(env, bitmap, buff, false, NULL, -1); return GraphicsJNI::createBitmap(env, bitmap, buff, false, NULL, NULL, -1); } static int nativeGetHeight(JNIEnv* env, jobject, SkBitmapRegionDecoder *brd) { Loading
core/jni/android/graphics/Graphics.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -345,14 +345,14 @@ SkRegion* GraphicsJNI::getNativeRegion(JNIEnv* env, jobject region) /////////////////////////////////////////////////////////////////////////////////////////// jobject GraphicsJNI::createBitmap(JNIEnv* env, SkBitmap* bitmap, jbyteArray buffer, bool isMutable, jbyteArray ninepatch, int density) bool isMutable, jbyteArray ninepatch, jintArray layoutbounds, int density) { SkASSERT(bitmap); SkASSERT(bitmap->pixelRef()); jobject obj = env->NewObject(gBitmap_class, gBitmap_constructorMethodID, static_cast<jint>(reinterpret_cast<uintptr_t>(bitmap)), buffer, isMutable, ninepatch, density); buffer, isMutable, ninepatch, layoutbounds, density); hasException(env); // For the side effect of logging. return obj; } Loading @@ -360,7 +360,7 @@ jobject GraphicsJNI::createBitmap(JNIEnv* env, SkBitmap* bitmap, jbyteArray buff jobject GraphicsJNI::createBitmap(JNIEnv* env, SkBitmap* bitmap, bool isMutable, jbyteArray ninepatch, int density) { return createBitmap(env, bitmap, NULL, isMutable, ninepatch, density); return createBitmap(env, bitmap, NULL, isMutable, ninepatch, NULL, density); } Loading Loading @@ -587,7 +587,7 @@ int register_android_graphics_Graphics(JNIEnv* env) gBitmap_class = make_globalref(env, "android/graphics/Bitmap"); gBitmap_nativeInstanceID = getFieldIDCheck(env, gBitmap_class, "mNativeBitmap", "I"); gBitmap_constructorMethodID = env->GetMethodID(gBitmap_class, "<init>", "(I[BZ[BI)V"); "(I[BZ[B[II)V"); gBitmapRegionDecoder_class = make_globalref(env, "android/graphics/BitmapRegionDecoder"); gBitmapRegionDecoder_constructorMethodID = env->GetMethodID(gBitmapRegionDecoder_class, "<init>", "(I)V"); Loading
core/jni/android/graphics/GraphicsJNI.h +2 −1 Original line number Diff line number Diff line Loading @@ -53,7 +53,8 @@ public: storage array (may be null). */ static jobject createBitmap(JNIEnv* env, SkBitmap* bitmap, jbyteArray buffer, bool isMutable, jbyteArray ninepatch, int density = -1); bool isMutable, jbyteArray ninepatch, jintArray layoutbounds, int density = -1); static jobject createBitmap(JNIEnv* env, SkBitmap* bitmap, bool isMutable, jbyteArray ninepatch, int density = -1); Loading