diff options
author | Chavi Weingarten <chaviw@google.com> | 2017-09-22 20:33:46 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-09-22 20:33:46 +0000 |
commit | 7f5265ebfca05ae301f6904c00cb15c84d23c96e (patch) | |
tree | 6a9d361ba706a752e963aa699f89aaeafb5c10f0 | |
parent | 8c238c5a7d7ff8b81a294a1476745f8bd6e235ca (diff) | |
parent | 0dd03f55e306c566d0c9180e5a437231106b3073 (diff) |
Merge "Added jni and SurfaceControl methods for native setColor"
-rw-r--r-- | core/java/android/view/SurfaceControl.java | 11 | ||||
-rw-r--r-- | core/jni/android_view_SurfaceControl.cpp | 12 |
2 files changed, 23 insertions, 0 deletions
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 7198f371bf5e..31daefff2ec4 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -18,6 +18,7 @@ package android.view; import static android.view.WindowManager.LayoutParams.INVALID_WINDOW_TYPE; +import android.annotation.Size; import android.graphics.Bitmap; import android.graphics.GraphicBuffer; import android.graphics.Rect; @@ -65,6 +66,7 @@ public class SurfaceControl { private static native void nativeSetSize(long nativeObject, int w, int h); private static native void nativeSetTransparentRegionHint(long nativeObject, Region region); private static native void nativeSetAlpha(long nativeObject, float alpha); + private static native void nativeSetColor(long nativeObject, float[] color); private static native void nativeSetMatrix(long nativeObject, float dsdx, float dtdx, float dtdy, float dsdy); private static native void nativeSetFlags(long nativeObject, int flags, int mask); @@ -552,6 +554,15 @@ public class SurfaceControl { nativeSetAlpha(mNativeObject, alpha); } + /** + * Sets a color for the Surface. + * @param color A float array with three values to represent r, g, b in range [0..1] + */ + public void setColor(@Size(3) float[] color) { + checkNotReleased(); + nativeSetColor(mNativeObject, color); + } + public void setMatrix(float dsdx, float dtdx, float dtdy, float dsdy) { checkNotReleased(); nativeSetMatrix(mNativeObject, dsdx, dtdx, dtdy, dsdy); diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index bf8bbf53295a..a9b849e7abd9 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -373,6 +373,16 @@ static void nativeSetAlpha(JNIEnv* env, jclass clazz, jlong nativeObject, jfloat } } +static void nativeSetColor(JNIEnv* env, jclass clazz, jlong nativeObject, jfloatArray fColor) { + SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject); + float* floatColors = env->GetFloatArrayElements(fColor, 0); + half3 color(floatColors[0], floatColors[1], floatColors[2]); + status_t err = ctrl->setColor(color); + if (err < 0 && err != NO_INIT) { + doThrowIAE(env); + } +} + static void nativeSetMatrix(JNIEnv* env, jclass clazz, jlong nativeObject, jfloat dsdx, jfloat dtdx, jfloat dtdy, jfloat dsdy) { SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject); @@ -812,6 +822,8 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeSetTransparentRegionHint }, {"nativeSetAlpha", "(JF)V", (void*)nativeSetAlpha }, + {"nativeSetColor", "(J[F)V", + (void*)nativeSetColor }, {"nativeSetMatrix", "(JFFFF)V", (void*)nativeSetMatrix }, {"nativeSetFlags", "(JII)V", |