Merge "Implement saveLayer*() correctly"
This commit is contained in:
@@ -541,9 +541,19 @@ class GLES20Canvas extends HardwareCanvas {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int saveLayer(RectF bounds, Paint paint, int saveFlags) {
|
public int saveLayer(RectF bounds, Paint paint, int saveFlags) {
|
||||||
return saveLayer(bounds.left, bounds.top, bounds.right, bounds.bottom, paint, 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
|
@Override
|
||||||
public int saveLayer(float left, float top, float right, float bottom, Paint paint,
|
public int saveLayer(float left, float top, float right, float bottom, Paint paint,
|
||||||
int saveFlags) {
|
int saveFlags) {
|
||||||
@@ -562,10 +572,15 @@ class GLES20Canvas extends HardwareCanvas {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int saveLayerAlpha(RectF bounds, int alpha, int saveFlags) {
|
public int saveLayerAlpha(RectF bounds, int alpha, int saveFlags) {
|
||||||
return saveLayerAlpha(bounds.left, bounds.top, bounds.right, bounds.bottom,
|
if (bounds != null) {
|
||||||
alpha, saveFlags);
|
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
|
@Override
|
||||||
public int saveLayerAlpha(float left, float top, float right, float bottom, int alpha,
|
public int saveLayerAlpha(float left, float top, float right, float bottom, int alpha,
|
||||||
int saveFlags) {
|
int saveFlags) {
|
||||||
|
|||||||
@@ -222,12 +222,26 @@ static jint android_view_GLES20Canvas_saveLayer(JNIEnv* env, jobject clazz,
|
|||||||
return renderer->saveLayer(left, top, right, bottom, paint, saveFlags);
|
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,
|
static jint android_view_GLES20Canvas_saveLayerAlpha(JNIEnv* env, jobject clazz,
|
||||||
OpenGLRenderer* renderer, jfloat left, jfloat top, jfloat right, jfloat bottom,
|
OpenGLRenderer* renderer, jfloat left, jfloat top, jfloat right, jfloat bottom,
|
||||||
jint alpha, jint saveFlags) {
|
jint alpha, jint saveFlags) {
|
||||||
return renderer->saveLayerAlpha(left, top, right, bottom, alpha, 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
|
// Clipping
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -759,7 +773,9 @@ static JNINativeMethod gMethods[] = {
|
|||||||
{ "nGetSaveCount", "(I)I", (void*) android_view_GLES20Canvas_getSaveCount },
|
{ "nGetSaveCount", "(I)I", (void*) android_view_GLES20Canvas_getSaveCount },
|
||||||
|
|
||||||
{ "nSaveLayer", "(IFFFFII)I", (void*) android_view_GLES20Canvas_saveLayer },
|
{ "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", "(IFFFFII)I", (void*) android_view_GLES20Canvas_saveLayerAlpha },
|
||||||
|
{ "nSaveLayerAlpha", "(III)I", (void*) android_view_GLES20Canvas_saveLayerAlphaClip },
|
||||||
|
|
||||||
{ "nQuickReject", "(IFFFFI)Z", (void*) android_view_GLES20Canvas_quickReject },
|
{ "nQuickReject", "(IFFFFI)Z", (void*) android_view_GLES20Canvas_quickReject },
|
||||||
{ "nClipRect", "(IFFFFI)Z", (void*) android_view_GLES20Canvas_clipRectF },
|
{ "nClipRect", "(IFFFFI)Z", (void*) android_view_GLES20Canvas_clipRectF },
|
||||||
|
|||||||
Reference in New Issue
Block a user