summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Peiyong Lin <lpy@google.com> 2018-10-09 21:35:15 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-10-09 21:35:15 +0000
commitcfa8a02831d196fb640610d99e686e6ff258254d (patch)
treec975ff03ef564116aaa6deafcce67d7880da598f
parentc997fc62e06f1fb2eadbceb6e7dfaa71fb2cf080 (diff)
parent52bb6b436f26df4c41ae3e73ddc855909b786a7b (diff)
Merge "[SurfaceControl] Add setColorTransform API."
-rw-r--r--core/java/android/view/SurfaceControl.java26
-rw-r--r--core/jni/android_view_SurfaceControl.cpp13
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",