Loading core/java/android/view/DisplayListCanvas.java +0 −23 Original line number Diff line number Diff line Loading @@ -221,29 +221,6 @@ public class DisplayListCanvas extends Canvas { // Drawing /////////////////////////////////////////////////////////////////////////// // TODO: move to Canvas.java @Override public void drawPatch(NinePatch patch, Rect dst, Paint paint) { Bitmap bitmap = patch.getBitmap(); throwIfCannotDraw(bitmap); final long nativePaint = paint == null ? 0 : paint.getNativeInstance(); nDrawPatch(mNativeCanvasWrapper, bitmap, patch.mNativeChunk, dst.left, dst.top, dst.right, dst.bottom, nativePaint); } // TODO: move to Canvas.java @Override public void drawPatch(NinePatch patch, RectF dst, Paint paint) { Bitmap bitmap = patch.getBitmap(); throwIfCannotDraw(bitmap); final long nativePaint = paint == null ? 0 : paint.getNativeInstance(); nDrawPatch(mNativeCanvasWrapper, bitmap, patch.mNativeChunk, dst.left, dst.top, dst.right, dst.bottom, nativePaint); } private static native void nDrawPatch(long renderer, Bitmap bitmap, long chunk, float left, float top, float right, float bottom, long paint); public void drawCircle(CanvasProperty<Float> cx, CanvasProperty<Float> cy, CanvasProperty<Float> radius, CanvasProperty<Paint> paint) { nDrawCircle(mNativeCanvasWrapper, cx.getNativeContainer(), cy.getNativeContainer(), Loading core/jni/Android.mk +0 −1 Original line number Diff line number Diff line Loading @@ -114,7 +114,6 @@ LOCAL_SRC_FILES:= \ android/graphics/MinikinUtils.cpp \ android/graphics/Movie.cpp \ android/graphics/NinePatch.cpp \ android/graphics/NinePatchImpl.cpp \ android/graphics/NinePatchPeeker.cpp \ android/graphics/Paint.cpp \ android/graphics/PaintImpl.cpp \ Loading core/jni/android/graphics/NinePatch.cpp +3 −74 Original line number Diff line number Diff line Loading @@ -29,12 +29,11 @@ #include "SkRegion.h" #include "GraphicsJNI.h" #include "utils/NinePatch.h" #include "JNIHelp.h" #include "core_jni_helpers.h" extern void NinePatch_Draw(SkCanvas* canvas, const SkRect& bounds, const SkBitmap& bitmap, const android::Res_png_9patch& chunk, const SkPaint* paint, SkRegion** outRegion); using namespace android; /** Loading Loading @@ -88,72 +87,6 @@ public: } } static void draw(JNIEnv* env, SkCanvas* canvas, SkRect& bounds, const SkBitmap& bitmap, Res_png_9patch* chunk, const SkPaint* paint, jint destDensity, jint srcDensity) { if (destDensity == srcDensity || destDensity == 0 || srcDensity == 0) { ALOGV("Drawing unscaled 9-patch: (%g,%g)-(%g,%g)", SkScalarToFloat(bounds.fLeft), SkScalarToFloat(bounds.fTop), SkScalarToFloat(bounds.fRight), SkScalarToFloat(bounds.fBottom)); NinePatch_Draw(canvas, bounds, bitmap, *chunk, paint, NULL); } else { canvas->save(); SkScalar scale = destDensity / (float)srcDensity; canvas->translate(bounds.fLeft, bounds.fTop); canvas->scale(scale, scale); bounds.fRight = (bounds.fRight-bounds.fLeft) / scale; bounds.fBottom = (bounds.fBottom-bounds.fTop) / scale; bounds.fLeft = bounds.fTop = 0; ALOGV("Drawing scaled 9-patch: (%g,%g)-(%g,%g) srcDensity=%d destDensity=%d", SkScalarToFloat(bounds.fLeft), SkScalarToFloat(bounds.fTop), SkScalarToFloat(bounds.fRight), SkScalarToFloat(bounds.fBottom), srcDensity, destDensity); NinePatch_Draw(canvas, bounds, bitmap, *chunk, paint, NULL); canvas->restore(); } } static void drawF(JNIEnv* env, jobject, jlong canvasHandle, jobject boundsRectF, jobject jbitmap, jlong chunkHandle, jlong paintHandle, jint destDensity, jint srcDensity) { SkCanvas* canvas = reinterpret_cast<Canvas*>(canvasHandle)->asSkCanvas(); Res_png_9patch* chunk = reinterpret_cast<Res_png_9patch*>(chunkHandle); const Paint* paint = reinterpret_cast<Paint*>(paintHandle); SkASSERT(canvas); SkASSERT(boundsRectF); SkASSERT(chunk); // paint is optional SkBitmap bitmap; GraphicsJNI::getSkBitmap(env, jbitmap, &bitmap); SkRect bounds; GraphicsJNI::jrectf_to_rect(env, boundsRectF, &bounds); draw(env, canvas, bounds, bitmap, chunk, paint, destDensity, srcDensity); } static void drawI(JNIEnv* env, jobject, jlong canvasHandle, jobject boundsRect, jobject jbitmap, jlong chunkHandle, jlong paintHandle, jint destDensity, jint srcDensity) { SkCanvas* canvas = reinterpret_cast<Canvas*>(canvasHandle)->asSkCanvas(); Res_png_9patch* chunk = reinterpret_cast<Res_png_9patch*>(chunkHandle); const Paint* paint = reinterpret_cast<Paint*>(paintHandle); SkASSERT(canvas); SkASSERT(boundsRect); SkASSERT(chunk); // paint is optional SkBitmap bitmap; GraphicsJNI::getSkBitmap(env, jbitmap, &bitmap); SkRect bounds; GraphicsJNI::jrect_to_rect(env, boundsRect, &bounds); draw(env, canvas, bounds, bitmap, chunk, paint, destDensity, srcDensity); } static jlong getTransparentRegion(JNIEnv* env, jobject, jobject jbitmap, jlong chunkHandle, jobject boundsRect) { Res_png_9patch* chunk = reinterpret_cast<Res_png_9patch*>(chunkHandle); Loading @@ -166,7 +99,7 @@ public: GraphicsJNI::jrect_to_rect(env, boundsRect, &bounds); SkRegion* region = NULL; NinePatch_Draw(NULL, bounds, bitmap, *chunk, NULL, ®ion); NinePatch::Draw(NULL, bounds, bitmap, *chunk, NULL, ®ion); return reinterpret_cast<jlong>(region); } Loading @@ -180,10 +113,6 @@ static JNINativeMethod gNinePatchMethods[] = { { "validateNinePatchChunk", "([B)J", (void*) SkNinePatchGlue::validateNinePatchChunk }, { "nativeFinalize", "(J)V", (void*) SkNinePatchGlue::finalize }, { "nativeDraw", "(JLandroid/graphics/RectF;Landroid/graphics/Bitmap;JJII)V", (void*) SkNinePatchGlue::drawF }, { "nativeDraw", "(JLandroid/graphics/Rect;Landroid/graphics/Bitmap;JJII)V", (void*) SkNinePatchGlue::drawI }, { "nativeGetTransparentRegion", "(Landroid/graphics/Bitmap;JLandroid/graphics/Rect;)J", (void*) SkNinePatchGlue::getTransparentRegion } }; Loading core/jni/android_graphics_Canvas.cpp +38 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ #include "GraphicsJNI.h" #include "core_jni_helpers.h" #include <androidfw/ResourceTypes.h> #include <Canvas.h> #include "SkDrawFilter.h" #include "SkGraphics.h" Loading Loading @@ -330,6 +332,41 @@ static void drawVertices(JNIEnv* env, jobject, jlong canvasHandle, indices, indexCount, *paint); } static void drawNinePatch(JNIEnv* env, jlong canvasHandle, jobject jbitmap, jlong chunkHandle, jfloat left, jfloat top, jfloat right, jfloat bottom, jlong paintHandle, jint dstDensity, jint srcDensity) { Canvas* canvas = get_canvas(canvasHandle); SkBitmap bitmap; GraphicsJNI::getSkBitmap(env, jbitmap, &bitmap); const android::Res_png_9patch* chunk = reinterpret_cast<android::Res_png_9patch*>(chunkHandle); const Paint* paint = reinterpret_cast<Paint*>(paintHandle); if (CC_LIKELY(dstDensity == srcDensity || dstDensity == 0 || srcDensity == 0)) { ALOGV("Drawing unscaled 9-patch: (%g,%g)-(%g,%g)", left, top, right, bottom); canvas->drawNinePatch(bitmap, *chunk, left, top, right, bottom, paint); } else { canvas->save(SkCanvas::kMatrixClip_SaveFlag); SkScalar scale = dstDensity / (float)srcDensity; canvas->translate(left, top); canvas->scale(scale, scale); Paint filteredPaint; if (paint) { filteredPaint = *paint; } filteredPaint.setFilterQuality(kLow_SkFilterQuality); ALOGV("Drawing scaled 9-patch: (0,0)-(%g,%g) srcDensity=%d destDensity=%d", (right-left)/scale, (bottom-top)/scale, srcDensity, dstDensity); canvas->drawNinePatch(bitmap, *chunk, 0, 0, (right-left)/scale, (bottom-top)/scale, &filteredPaint); canvas->restore(); } } static void drawBitmap(JNIEnv* env, jobject jcanvas, jlong canvasHandle, jobject jbitmap, jfloat left, jfloat top, jlong paintHandle, jint canvasDensity, jint screenDensity, jint bitmapDensity) { Loading Loading @@ -751,6 +788,7 @@ static JNINativeMethod gMethods[] = { {"native_drawArc","(JFFFFFFZJ)V", (void*) CanvasJNI::drawArc}, {"native_drawPath","(JJJ)V", (void*) CanvasJNI::drawPath}, {"nativeDrawVertices", "(JII[FI[FI[II[SIIJ)V", (void*)CanvasJNI::drawVertices}, {"native_drawNinePatch", "(JLandroid/graphics/Bitmap;JFFFFJII)V", (void*)CanvasJNI::drawNinePatch}, {"native_drawBitmap","(JLandroid/graphics/Bitmap;FFJIII)V", (void*) CanvasJNI::drawBitmap}, {"nativeDrawBitmapMatrix", "(JLandroid/graphics/Bitmap;JJ)V", (void*)CanvasJNI::drawBitmapMatrix}, {"native_drawBitmap","(JLandroid/graphics/Bitmap;FFFFFFFFJII)V", (void*) CanvasJNI::drawBitmapRect}, Loading core/jni/android_view_DisplayListCanvas.cpp +0 −15 Original line number Diff line number Diff line Loading @@ -22,8 +22,6 @@ #include <android_runtime/AndroidRuntime.h> #include <androidfw/ResourceTypes.h> #include <cutils/properties.h> #include <SkBitmap.h> Loading Loading @@ -83,17 +81,6 @@ static jint android_view_DisplayListCanvas_getMaxTextureHeight(JNIEnv* env, jobj // Drawing // ---------------------------------------------------------------------------- static void android_view_DisplayListCanvas_drawPatch(JNIEnv* env, jobject clazz, jlong rendererPtr, jobject jbitmap, jlong patchPtr, float left, float top, float right, float bottom, jlong paintPtr) { SkBitmap bitmap; GraphicsJNI::getSkBitmap(env, jbitmap, &bitmap); DisplayListCanvas* renderer = reinterpret_cast<DisplayListCanvas*>(rendererPtr); Res_png_9patch* patch = reinterpret_cast<Res_png_9patch*>(patchPtr); Paint* paint = reinterpret_cast<Paint*>(paintPtr); renderer->drawPatch(bitmap, patch, left, top, right, bottom, paint); } static void android_view_DisplayListCanvas_drawRoundRectProps(JNIEnv* env, jobject clazz, jlong rendererPtr, jlong leftPropPtr, jlong topPropPtr, jlong rightPropPtr, jlong bottomPropPtr, jlong rxPropPtr, jlong ryPropPtr, jlong paintPropPtr) { Loading Loading @@ -196,8 +183,6 @@ static JNINativeMethod gMethods[] = { { "nCallDrawGLFunction", "(JJ)V", (void*) android_view_DisplayListCanvas_callDrawGLFunction }, { "nDrawPatch", "(JLandroid/graphics/Bitmap;JFFFFJ)V", (void*) android_view_DisplayListCanvas_drawPatch }, { "nDrawRoundRect", "(JJJJJJJJ)V", (void*) android_view_DisplayListCanvas_drawRoundRectProps }, { "nDrawCircle", "(JJJJJ)V", (void*) android_view_DisplayListCanvas_drawCircleProps }, Loading Loading
core/java/android/view/DisplayListCanvas.java +0 −23 Original line number Diff line number Diff line Loading @@ -221,29 +221,6 @@ public class DisplayListCanvas extends Canvas { // Drawing /////////////////////////////////////////////////////////////////////////// // TODO: move to Canvas.java @Override public void drawPatch(NinePatch patch, Rect dst, Paint paint) { Bitmap bitmap = patch.getBitmap(); throwIfCannotDraw(bitmap); final long nativePaint = paint == null ? 0 : paint.getNativeInstance(); nDrawPatch(mNativeCanvasWrapper, bitmap, patch.mNativeChunk, dst.left, dst.top, dst.right, dst.bottom, nativePaint); } // TODO: move to Canvas.java @Override public void drawPatch(NinePatch patch, RectF dst, Paint paint) { Bitmap bitmap = patch.getBitmap(); throwIfCannotDraw(bitmap); final long nativePaint = paint == null ? 0 : paint.getNativeInstance(); nDrawPatch(mNativeCanvasWrapper, bitmap, patch.mNativeChunk, dst.left, dst.top, dst.right, dst.bottom, nativePaint); } private static native void nDrawPatch(long renderer, Bitmap bitmap, long chunk, float left, float top, float right, float bottom, long paint); public void drawCircle(CanvasProperty<Float> cx, CanvasProperty<Float> cy, CanvasProperty<Float> radius, CanvasProperty<Paint> paint) { nDrawCircle(mNativeCanvasWrapper, cx.getNativeContainer(), cy.getNativeContainer(), Loading
core/jni/Android.mk +0 −1 Original line number Diff line number Diff line Loading @@ -114,7 +114,6 @@ LOCAL_SRC_FILES:= \ android/graphics/MinikinUtils.cpp \ android/graphics/Movie.cpp \ android/graphics/NinePatch.cpp \ android/graphics/NinePatchImpl.cpp \ android/graphics/NinePatchPeeker.cpp \ android/graphics/Paint.cpp \ android/graphics/PaintImpl.cpp \ Loading
core/jni/android/graphics/NinePatch.cpp +3 −74 Original line number Diff line number Diff line Loading @@ -29,12 +29,11 @@ #include "SkRegion.h" #include "GraphicsJNI.h" #include "utils/NinePatch.h" #include "JNIHelp.h" #include "core_jni_helpers.h" extern void NinePatch_Draw(SkCanvas* canvas, const SkRect& bounds, const SkBitmap& bitmap, const android::Res_png_9patch& chunk, const SkPaint* paint, SkRegion** outRegion); using namespace android; /** Loading Loading @@ -88,72 +87,6 @@ public: } } static void draw(JNIEnv* env, SkCanvas* canvas, SkRect& bounds, const SkBitmap& bitmap, Res_png_9patch* chunk, const SkPaint* paint, jint destDensity, jint srcDensity) { if (destDensity == srcDensity || destDensity == 0 || srcDensity == 0) { ALOGV("Drawing unscaled 9-patch: (%g,%g)-(%g,%g)", SkScalarToFloat(bounds.fLeft), SkScalarToFloat(bounds.fTop), SkScalarToFloat(bounds.fRight), SkScalarToFloat(bounds.fBottom)); NinePatch_Draw(canvas, bounds, bitmap, *chunk, paint, NULL); } else { canvas->save(); SkScalar scale = destDensity / (float)srcDensity; canvas->translate(bounds.fLeft, bounds.fTop); canvas->scale(scale, scale); bounds.fRight = (bounds.fRight-bounds.fLeft) / scale; bounds.fBottom = (bounds.fBottom-bounds.fTop) / scale; bounds.fLeft = bounds.fTop = 0; ALOGV("Drawing scaled 9-patch: (%g,%g)-(%g,%g) srcDensity=%d destDensity=%d", SkScalarToFloat(bounds.fLeft), SkScalarToFloat(bounds.fTop), SkScalarToFloat(bounds.fRight), SkScalarToFloat(bounds.fBottom), srcDensity, destDensity); NinePatch_Draw(canvas, bounds, bitmap, *chunk, paint, NULL); canvas->restore(); } } static void drawF(JNIEnv* env, jobject, jlong canvasHandle, jobject boundsRectF, jobject jbitmap, jlong chunkHandle, jlong paintHandle, jint destDensity, jint srcDensity) { SkCanvas* canvas = reinterpret_cast<Canvas*>(canvasHandle)->asSkCanvas(); Res_png_9patch* chunk = reinterpret_cast<Res_png_9patch*>(chunkHandle); const Paint* paint = reinterpret_cast<Paint*>(paintHandle); SkASSERT(canvas); SkASSERT(boundsRectF); SkASSERT(chunk); // paint is optional SkBitmap bitmap; GraphicsJNI::getSkBitmap(env, jbitmap, &bitmap); SkRect bounds; GraphicsJNI::jrectf_to_rect(env, boundsRectF, &bounds); draw(env, canvas, bounds, bitmap, chunk, paint, destDensity, srcDensity); } static void drawI(JNIEnv* env, jobject, jlong canvasHandle, jobject boundsRect, jobject jbitmap, jlong chunkHandle, jlong paintHandle, jint destDensity, jint srcDensity) { SkCanvas* canvas = reinterpret_cast<Canvas*>(canvasHandle)->asSkCanvas(); Res_png_9patch* chunk = reinterpret_cast<Res_png_9patch*>(chunkHandle); const Paint* paint = reinterpret_cast<Paint*>(paintHandle); SkASSERT(canvas); SkASSERT(boundsRect); SkASSERT(chunk); // paint is optional SkBitmap bitmap; GraphicsJNI::getSkBitmap(env, jbitmap, &bitmap); SkRect bounds; GraphicsJNI::jrect_to_rect(env, boundsRect, &bounds); draw(env, canvas, bounds, bitmap, chunk, paint, destDensity, srcDensity); } static jlong getTransparentRegion(JNIEnv* env, jobject, jobject jbitmap, jlong chunkHandle, jobject boundsRect) { Res_png_9patch* chunk = reinterpret_cast<Res_png_9patch*>(chunkHandle); Loading @@ -166,7 +99,7 @@ public: GraphicsJNI::jrect_to_rect(env, boundsRect, &bounds); SkRegion* region = NULL; NinePatch_Draw(NULL, bounds, bitmap, *chunk, NULL, ®ion); NinePatch::Draw(NULL, bounds, bitmap, *chunk, NULL, ®ion); return reinterpret_cast<jlong>(region); } Loading @@ -180,10 +113,6 @@ static JNINativeMethod gNinePatchMethods[] = { { "validateNinePatchChunk", "([B)J", (void*) SkNinePatchGlue::validateNinePatchChunk }, { "nativeFinalize", "(J)V", (void*) SkNinePatchGlue::finalize }, { "nativeDraw", "(JLandroid/graphics/RectF;Landroid/graphics/Bitmap;JJII)V", (void*) SkNinePatchGlue::drawF }, { "nativeDraw", "(JLandroid/graphics/Rect;Landroid/graphics/Bitmap;JJII)V", (void*) SkNinePatchGlue::drawI }, { "nativeGetTransparentRegion", "(Landroid/graphics/Bitmap;JLandroid/graphics/Rect;)J", (void*) SkNinePatchGlue::getTransparentRegion } }; Loading
core/jni/android_graphics_Canvas.cpp +38 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ #include "GraphicsJNI.h" #include "core_jni_helpers.h" #include <androidfw/ResourceTypes.h> #include <Canvas.h> #include "SkDrawFilter.h" #include "SkGraphics.h" Loading Loading @@ -330,6 +332,41 @@ static void drawVertices(JNIEnv* env, jobject, jlong canvasHandle, indices, indexCount, *paint); } static void drawNinePatch(JNIEnv* env, jlong canvasHandle, jobject jbitmap, jlong chunkHandle, jfloat left, jfloat top, jfloat right, jfloat bottom, jlong paintHandle, jint dstDensity, jint srcDensity) { Canvas* canvas = get_canvas(canvasHandle); SkBitmap bitmap; GraphicsJNI::getSkBitmap(env, jbitmap, &bitmap); const android::Res_png_9patch* chunk = reinterpret_cast<android::Res_png_9patch*>(chunkHandle); const Paint* paint = reinterpret_cast<Paint*>(paintHandle); if (CC_LIKELY(dstDensity == srcDensity || dstDensity == 0 || srcDensity == 0)) { ALOGV("Drawing unscaled 9-patch: (%g,%g)-(%g,%g)", left, top, right, bottom); canvas->drawNinePatch(bitmap, *chunk, left, top, right, bottom, paint); } else { canvas->save(SkCanvas::kMatrixClip_SaveFlag); SkScalar scale = dstDensity / (float)srcDensity; canvas->translate(left, top); canvas->scale(scale, scale); Paint filteredPaint; if (paint) { filteredPaint = *paint; } filteredPaint.setFilterQuality(kLow_SkFilterQuality); ALOGV("Drawing scaled 9-patch: (0,0)-(%g,%g) srcDensity=%d destDensity=%d", (right-left)/scale, (bottom-top)/scale, srcDensity, dstDensity); canvas->drawNinePatch(bitmap, *chunk, 0, 0, (right-left)/scale, (bottom-top)/scale, &filteredPaint); canvas->restore(); } } static void drawBitmap(JNIEnv* env, jobject jcanvas, jlong canvasHandle, jobject jbitmap, jfloat left, jfloat top, jlong paintHandle, jint canvasDensity, jint screenDensity, jint bitmapDensity) { Loading Loading @@ -751,6 +788,7 @@ static JNINativeMethod gMethods[] = { {"native_drawArc","(JFFFFFFZJ)V", (void*) CanvasJNI::drawArc}, {"native_drawPath","(JJJ)V", (void*) CanvasJNI::drawPath}, {"nativeDrawVertices", "(JII[FI[FI[II[SIIJ)V", (void*)CanvasJNI::drawVertices}, {"native_drawNinePatch", "(JLandroid/graphics/Bitmap;JFFFFJII)V", (void*)CanvasJNI::drawNinePatch}, {"native_drawBitmap","(JLandroid/graphics/Bitmap;FFJIII)V", (void*) CanvasJNI::drawBitmap}, {"nativeDrawBitmapMatrix", "(JLandroid/graphics/Bitmap;JJ)V", (void*)CanvasJNI::drawBitmapMatrix}, {"native_drawBitmap","(JLandroid/graphics/Bitmap;FFFFFFFFJII)V", (void*) CanvasJNI::drawBitmapRect}, Loading
core/jni/android_view_DisplayListCanvas.cpp +0 −15 Original line number Diff line number Diff line Loading @@ -22,8 +22,6 @@ #include <android_runtime/AndroidRuntime.h> #include <androidfw/ResourceTypes.h> #include <cutils/properties.h> #include <SkBitmap.h> Loading Loading @@ -83,17 +81,6 @@ static jint android_view_DisplayListCanvas_getMaxTextureHeight(JNIEnv* env, jobj // Drawing // ---------------------------------------------------------------------------- static void android_view_DisplayListCanvas_drawPatch(JNIEnv* env, jobject clazz, jlong rendererPtr, jobject jbitmap, jlong patchPtr, float left, float top, float right, float bottom, jlong paintPtr) { SkBitmap bitmap; GraphicsJNI::getSkBitmap(env, jbitmap, &bitmap); DisplayListCanvas* renderer = reinterpret_cast<DisplayListCanvas*>(rendererPtr); Res_png_9patch* patch = reinterpret_cast<Res_png_9patch*>(patchPtr); Paint* paint = reinterpret_cast<Paint*>(paintPtr); renderer->drawPatch(bitmap, patch, left, top, right, bottom, paint); } static void android_view_DisplayListCanvas_drawRoundRectProps(JNIEnv* env, jobject clazz, jlong rendererPtr, jlong leftPropPtr, jlong topPropPtr, jlong rightPropPtr, jlong bottomPropPtr, jlong rxPropPtr, jlong ryPropPtr, jlong paintPropPtr) { Loading Loading @@ -196,8 +183,6 @@ static JNINativeMethod gMethods[] = { { "nCallDrawGLFunction", "(JJ)V", (void*) android_view_DisplayListCanvas_callDrawGLFunction }, { "nDrawPatch", "(JLandroid/graphics/Bitmap;JFFFFJ)V", (void*) android_view_DisplayListCanvas_drawPatch }, { "nDrawRoundRect", "(JJJJJJJJ)V", (void*) android_view_DisplayListCanvas_drawRoundRectProps }, { "nDrawCircle", "(JJJJJ)V", (void*) android_view_DisplayListCanvas_drawCircleProps }, Loading