diff options
| author | 2018-10-09 21:35:15 +0000 | |
|---|---|---|
| committer | 2018-10-09 21:35:15 +0000 | |
| commit | cfa8a02831d196fb640610d99e686e6ff258254d (patch) | |
| tree | c975ff03ef564116aaa6deafcce67d7880da598f | |
| parent | c997fc62e06f1fb2eadbceb6e7dfaa71fb2cf080 (diff) | |
| parent | 52bb6b436f26df4c41ae3e73ddc855909b786a7b (diff) | |
Merge "[SurfaceControl] Add setColorTransform API."
| -rw-r--r-- | core/java/android/view/SurfaceControl.java | 26 | ||||
| -rw-r--r-- | core/jni/android_view_SurfaceControl.cpp | 13 |
2 files changed, 39 insertions, 0 deletions
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 7271a9e4616f..0d33bbd1fc76 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -97,6 +97,8 @@ public class SurfaceControl implements Parcelable { private static native void nativeSetMatrix(long transactionObj, long nativeObject, float dsdx, float dtdx, float dtdy, float dsdy); + private static native void nativeSetColorTransform(long transactionObj, long nativeObject, + float[] matrix, float[] translation); private static native void nativeSetColor(long transactionObj, long nativeObject, float[] color); private static native void nativeSetFlags(long transactionObj, long nativeObject, int flags, int mask); @@ -945,6 +947,18 @@ public class SurfaceControl implements Parcelable { } } + /** + * Sets the color transform for the Surface. + * @param matrix A float array with 9 values represents a 3x3 transform matrix + * @param translation A float array with 3 values represents a translation vector + */ + public void setColorTransform(@Size(9) float[] matrix, @Size(3) float[] translation) { + checkNotReleased(); + synchronized (SurfaceControl.class) { + sGlobalTransaction.setColorTransform(this, matrix, translation); + } + } + public void setWindowCrop(Rect crop) { checkNotReleased(); synchronized (SurfaceControl.class) { @@ -1438,6 +1452,18 @@ public class SurfaceControl implements Parcelable { return this; } + /** + * Sets the color transform for the Surface. + * @param matrix A float array with 9 values represents a 3x3 transform matrix + * @param translation A float array with 3 values represents a translation vector + */ + public Transaction setColorTransform(SurfaceControl sc, @Size(9) float[] matrix, + @Size(3) float[] translation) { + sc.checkNotReleased(); + nativeSetColorTransform(mNativeObject, sc.mNativeObject, matrix, translation); + return this; + } + @UnsupportedAppUsage public Transaction setWindowCrop(SurfaceControl sc, Rect crop) { sc.checkNotReleased(); diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index b70177ffab9a..2e1e130d8375 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -339,6 +339,17 @@ static void nativeSetMatrix(JNIEnv* env, jclass clazz, jlong transactionObj, transaction->setMatrix(ctrl, dsdx, dtdx, dtdy, dsdy); } +static void nativeSetColorTransform(JNIEnv* env, jclass clazz, jlong transactionObj, + jlong nativeObject, jfloatArray fMatrix, jfloatArray fTranslation) { + auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj); + SurfaceControl* const surfaceControl = reinterpret_cast<SurfaceControl*>(nativeObject); + float* floatMatrix = env->GetFloatArrayElements(fMatrix, 0); + mat3 matrix(static_cast<float const*>(floatMatrix)); + float* floatTranslation = env->GetFloatArrayElements(fTranslation, 0); + vec3 translation(floatTranslation[0], floatTranslation[1], floatTranslation[2]); + transaction->setColorTransform(surfaceControl, matrix, translation); +} + static void nativeSetWindowCrop(JNIEnv* env, jclass clazz, jlong transactionObj, jlong nativeObject, jint l, jint t, jint r, jint b) { @@ -849,6 +860,8 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeSetColor }, {"nativeSetMatrix", "(JJFFFF)V", (void*)nativeSetMatrix }, + {"nativeSetColorTransform", "(JJ[F[F)V", + (void*)nativeSetColorTransform }, {"nativeSetFlags", "(JJII)V", (void*)nativeSetFlags }, {"nativeSetWindowCrop", "(JJIIII)V", |