From 4e00a7a3311ca6a28bd1b2caf6defac542ff0dc1 Mon Sep 17 00:00:00 2001 From: Marzia Favaro Date: Wed, 31 Jul 2024 12:48:57 +0200 Subject: EdgeExtension: Add SurfaceControl.Transaction API Bug: 322036393 Test: atest TransitionAnimationTests Flag: com.android.graphics.libgui.flags.edge_extension_shader Change-Id: Ic4ede2185f97af433c8e523637f14aa9df4cb73f --- core/java/android/view/SurfaceControl.java | 16 ++++++++++++++++ core/jni/android_view_SurfaceControl.cpp | 17 +++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 634469dd52ff..a7641c07bb90 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -164,6 +164,9 @@ public final class SurfaceControl implements Parcelable { float width, float height, float vecX, float vecY, float maxStretchAmountX, float maxStretchAmountY, float childRelativeLeft, float childRelativeTop, float childRelativeRight, float childRelativeBottom); + private static native void nativeSetEdgeExtensionEffect(long transactionObj, long nativeObj, + boolean leftEdge, boolean rightEdge, + boolean topEdge, boolean bottomEdge); private static native void nativeSetTrustedOverlay(long transactionObj, long nativeObject, int isTrustedOverlay); private static native void nativeSetDropInputMode( @@ -3510,6 +3513,19 @@ public final class SurfaceControl implements Parcelable { return this; } + /** + * @hide + */ + public Transaction setEdgeExtensionEffect(SurfaceControl sc, int edge) { + checkPreconditions(sc); + + nativeSetEdgeExtensionEffect( + mNativeObject, sc.mNativeObject, + (edge & WindowInsets.Side.LEFT) != 0, (edge & WindowInsets.Side.RIGHT) != 0, + (edge & WindowInsets.Side.TOP) != 0, (edge & WindowInsets.Side.BOTTOM) != 0); + return this; + } + /** * @hide */ diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index 9ce76583517b..0f531641903a 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -799,6 +800,20 @@ static void nativeSetStretchEffect(JNIEnv* env, jclass clazz, jlong transactionO transaction->setStretchEffect(ctrl, stretch); } +static void nativeSetEdgeExtensionEffect(JNIEnv* env, jclass clazz, jlong transactionObj, + jlong nativeObj, jboolean leftEdge, jboolean rightEdge, + jboolean topEdge, jboolean bottomEdge) { + auto transaction = reinterpret_cast(transactionObj); + auto* const ctrl = reinterpret_cast(nativeObj); + + auto effect = gui::EdgeExtensionParameters(); + effect.extendLeft = leftEdge; + effect.extendRight = rightEdge; + effect.extendTop = topEdge; + effect.extendBottom = bottomEdge; + transaction->setEdgeExtensionEffect(ctrl, effect); +} + static void nativeSetFlags(JNIEnv* env, jclass clazz, jlong transactionObj, jlong nativeObject, jint flags, jint mask) { auto transaction = reinterpret_cast(transactionObj); @@ -2340,6 +2355,8 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeSetBlurRegions }, {"nativeSetStretchEffect", "(JJFFFFFFFFFF)V", (void*) nativeSetStretchEffect }, + {"nativeSetEdgeExtensionEffect", "(JJZZZZ)V", + (void*) nativeSetEdgeExtensionEffect }, {"nativeSetShadowRadius", "(JJF)V", (void*)nativeSetShadowRadius }, {"nativeSetFrameRate", "(JJFII)V", -- cgit v1.2.3-59-g8ed1b