Loading core/java/android/view/GLES20Canvas.java +18 −3 Original line number Diff line number Diff line Loading @@ -541,9 +541,19 @@ class GLES20Canvas extends HardwareCanvas { @Override public int saveLayer(RectF bounds, Paint paint, int saveFlags) { if (bounds != null) { return saveLayer(bounds.left, bounds.top, bounds.right, bounds.bottom, paint, saveFlags); } int modifier = paint != null ? setupColorFilter(paint) : MODIFIER_NONE; final int nativePaint = paint == null ? 0 : paint.mNativePaint; int count = nSaveLayer(mRenderer, nativePaint, saveFlags); if (modifier != MODIFIER_NONE) nResetModifiers(mRenderer, modifier); return count; } private static native int nSaveLayer(int renderer, int paint, int saveFlags); @Override public int saveLayer(float left, float top, float right, float bottom, Paint paint, int saveFlags) { Loading @@ -562,9 +572,14 @@ class GLES20Canvas extends HardwareCanvas { @Override public int saveLayerAlpha(RectF bounds, int alpha, int saveFlags) { if (bounds != null) { return saveLayerAlpha(bounds.left, bounds.top, bounds.right, bounds.bottom, alpha, saveFlags); } return nSaveLayerAlpha(mRenderer, alpha, saveFlags); } private static native int nSaveLayerAlpha(int renderer, int alpha, int saveFlags); @Override public int saveLayerAlpha(float left, float top, float right, float bottom, int alpha, Loading core/jni/android_view_GLES20Canvas.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -222,12 +222,26 @@ static jint android_view_GLES20Canvas_saveLayer(JNIEnv* env, jobject clazz, return renderer->saveLayer(left, top, right, bottom, paint, saveFlags); } static jint android_view_GLES20Canvas_saveLayerClip(JNIEnv* env, jobject clazz, OpenGLRenderer* renderer, SkPaint* paint, jint saveFlags) { const android::uirenderer::Rect& bounds(renderer->getClipBounds()); return renderer->saveLayer(bounds.left, bounds.top, bounds.right, bounds.bottom, paint, saveFlags); } static jint android_view_GLES20Canvas_saveLayerAlpha(JNIEnv* env, jobject clazz, OpenGLRenderer* renderer, jfloat left, jfloat top, jfloat right, jfloat bottom, jint alpha, jint saveFlags) { return renderer->saveLayerAlpha(left, top, right, bottom, alpha, saveFlags); } static jint android_view_GLES20Canvas_saveLayerAlphaClip(JNIEnv* env, jobject clazz, OpenGLRenderer* renderer, jint alpha, jint saveFlags) { const android::uirenderer::Rect& bounds(renderer->getClipBounds()); return renderer->saveLayerAlpha(bounds.left, bounds.top, bounds.right, bounds.bottom, alpha, saveFlags); } // ---------------------------------------------------------------------------- // Clipping // ---------------------------------------------------------------------------- Loading Loading @@ -759,7 +773,9 @@ static JNINativeMethod gMethods[] = { { "nGetSaveCount", "(I)I", (void*) android_view_GLES20Canvas_getSaveCount }, { "nSaveLayer", "(IFFFFII)I", (void*) android_view_GLES20Canvas_saveLayer }, { "nSaveLayer", "(III)I", (void*) android_view_GLES20Canvas_saveLayerClip }, { "nSaveLayerAlpha", "(IFFFFII)I", (void*) android_view_GLES20Canvas_saveLayerAlpha }, { "nSaveLayerAlpha", "(III)I", (void*) android_view_GLES20Canvas_saveLayerAlphaClip }, { "nQuickReject", "(IFFFFI)Z", (void*) android_view_GLES20Canvas_quickReject }, { "nClipRect", "(IFFFFI)Z", (void*) android_view_GLES20Canvas_clipRectF }, Loading Loading
core/java/android/view/GLES20Canvas.java +18 −3 Original line number Diff line number Diff line Loading @@ -541,9 +541,19 @@ class GLES20Canvas extends HardwareCanvas { @Override public int saveLayer(RectF bounds, Paint paint, int saveFlags) { if (bounds != null) { return saveLayer(bounds.left, bounds.top, bounds.right, bounds.bottom, paint, saveFlags); } int modifier = paint != null ? setupColorFilter(paint) : MODIFIER_NONE; final int nativePaint = paint == null ? 0 : paint.mNativePaint; int count = nSaveLayer(mRenderer, nativePaint, saveFlags); if (modifier != MODIFIER_NONE) nResetModifiers(mRenderer, modifier); return count; } private static native int nSaveLayer(int renderer, int paint, int saveFlags); @Override public int saveLayer(float left, float top, float right, float bottom, Paint paint, int saveFlags) { Loading @@ -562,9 +572,14 @@ class GLES20Canvas extends HardwareCanvas { @Override public int saveLayerAlpha(RectF bounds, int alpha, int saveFlags) { if (bounds != null) { return saveLayerAlpha(bounds.left, bounds.top, bounds.right, bounds.bottom, alpha, saveFlags); } return nSaveLayerAlpha(mRenderer, alpha, saveFlags); } private static native int nSaveLayerAlpha(int renderer, int alpha, int saveFlags); @Override public int saveLayerAlpha(float left, float top, float right, float bottom, int alpha, Loading
core/jni/android_view_GLES20Canvas.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -222,12 +222,26 @@ static jint android_view_GLES20Canvas_saveLayer(JNIEnv* env, jobject clazz, return renderer->saveLayer(left, top, right, bottom, paint, saveFlags); } static jint android_view_GLES20Canvas_saveLayerClip(JNIEnv* env, jobject clazz, OpenGLRenderer* renderer, SkPaint* paint, jint saveFlags) { const android::uirenderer::Rect& bounds(renderer->getClipBounds()); return renderer->saveLayer(bounds.left, bounds.top, bounds.right, bounds.bottom, paint, saveFlags); } static jint android_view_GLES20Canvas_saveLayerAlpha(JNIEnv* env, jobject clazz, OpenGLRenderer* renderer, jfloat left, jfloat top, jfloat right, jfloat bottom, jint alpha, jint saveFlags) { return renderer->saveLayerAlpha(left, top, right, bottom, alpha, saveFlags); } static jint android_view_GLES20Canvas_saveLayerAlphaClip(JNIEnv* env, jobject clazz, OpenGLRenderer* renderer, jint alpha, jint saveFlags) { const android::uirenderer::Rect& bounds(renderer->getClipBounds()); return renderer->saveLayerAlpha(bounds.left, bounds.top, bounds.right, bounds.bottom, alpha, saveFlags); } // ---------------------------------------------------------------------------- // Clipping // ---------------------------------------------------------------------------- Loading Loading @@ -759,7 +773,9 @@ static JNINativeMethod gMethods[] = { { "nGetSaveCount", "(I)I", (void*) android_view_GLES20Canvas_getSaveCount }, { "nSaveLayer", "(IFFFFII)I", (void*) android_view_GLES20Canvas_saveLayer }, { "nSaveLayer", "(III)I", (void*) android_view_GLES20Canvas_saveLayerClip }, { "nSaveLayerAlpha", "(IFFFFII)I", (void*) android_view_GLES20Canvas_saveLayerAlpha }, { "nSaveLayerAlpha", "(III)I", (void*) android_view_GLES20Canvas_saveLayerAlphaClip }, { "nQuickReject", "(IFFFFI)Z", (void*) android_view_GLES20Canvas_quickReject }, { "nClipRect", "(IFFFFI)Z", (void*) android_view_GLES20Canvas_clipRectF }, Loading