Merge "Added new arguments for screenshot request" into sc-dev

This commit is contained in:
Chavi Weingarten
2021-02-01 21:57:29 +00:00
committed by Android (Google) Code Review
2 changed files with 42 additions and 9 deletions

View File

@@ -750,18 +750,22 @@ public final class SurfaceControl implements Parcelable {
private abstract static class CaptureArgs {
private final int mPixelFormat;
private final Rect mSourceCrop = new Rect();
private final float mFrameScale;
private final float mFrameScaleX;
private final float mFrameScaleY;
private final boolean mCaptureSecureLayers;
private final boolean mAllowProtected;
private final long mUid;
private final boolean mGrayscale;
private CaptureArgs(Builder<? extends Builder<?>> builder) {
mPixelFormat = builder.mPixelFormat;
mSourceCrop.set(builder.mSourceCrop);
mFrameScale = builder.mFrameScale;
mFrameScaleX = builder.mFrameScaleX;
mFrameScaleY = builder.mFrameScaleY;
mCaptureSecureLayers = builder.mCaptureSecureLayers;
mAllowProtected = builder.mAllowProtected;
mUid = builder.mUid;
mGrayscale = builder.mGrayscale;
}
/**
@@ -772,10 +776,12 @@ public final class SurfaceControl implements Parcelable {
abstract static class Builder<T extends Builder<T>> {
private int mPixelFormat = PixelFormat.RGBA_8888;
private final Rect mSourceCrop = new Rect();
private float mFrameScale = 1;
private float mFrameScaleX = 1;
private float mFrameScaleY = 1;
private boolean mCaptureSecureLayers;
private boolean mAllowProtected;
private long mUid = -1;
private boolean mGrayscale;
/**
* The desired pixel format of the returned buffer.
@@ -798,7 +804,18 @@ public final class SurfaceControl implements Parcelable {
* The desired scale of the returned buffer. The raw screen will be scaled up/down.
*/
public T setFrameScale(float frameScale) {
mFrameScale = frameScale;
mFrameScaleX = frameScale;
mFrameScaleY = frameScale;
return getThis();
}
/**
* The desired scale of the returned buffer, allowing separate values for x and y scale.
* The raw screen will be scaled up/down.
*/
public T setFrameScale(float frameScaleX, float frameScaleY) {
mFrameScaleX = frameScaleX;
mFrameScaleY = frameScaleY;
return getThis();
}
@@ -833,6 +850,14 @@ public final class SurfaceControl implements Parcelable {
return getThis();
}
/**
* Set whether the screenshot should use grayscale or not.
*/
public T setGrayscale(boolean grayscale) {
mGrayscale = grayscale;
return getThis();
}
/**
* Each sub class should return itself to allow the builder to chain properly
*/
@@ -929,7 +954,7 @@ public final class SurfaceControl implements Parcelable {
/**
* The arguments class used to make layer capture requests.
*
* @see #nativeCaptureLayers(LayerCaptureArgs)
* @see #nativeCaptureLayers(LayerCaptureArgs, ScreenCaptureListener)
* @hide
*/
public static class LayerCaptureArgs extends CaptureArgs {

View File

@@ -110,10 +110,12 @@ static struct {
static struct {
jfieldID pixelFormat;
jfieldID sourceCrop;
jfieldID frameScale;
jfieldID frameScaleX;
jfieldID frameScaleY;
jfieldID captureSecureLayers;
jfieldID allowProtected;
jfieldID uid;
jfieldID grayscale;
} gCaptureArgsClassInfo;
static struct {
@@ -380,13 +382,17 @@ static void getCaptureArgs(JNIEnv* env, jobject captureArgsObject, CaptureArgs&
captureArgs.sourceCrop =
rectFromObj(env,
env->GetObjectField(captureArgsObject, gCaptureArgsClassInfo.sourceCrop));
captureArgs.frameScale =
env->GetFloatField(captureArgsObject, gCaptureArgsClassInfo.frameScale);
captureArgs.frameScaleX =
env->GetFloatField(captureArgsObject, gCaptureArgsClassInfo.frameScaleX);
captureArgs.frameScaleY =
env->GetFloatField(captureArgsObject, gCaptureArgsClassInfo.frameScaleY);
captureArgs.captureSecureLayers =
env->GetBooleanField(captureArgsObject, gCaptureArgsClassInfo.captureSecureLayers);
captureArgs.allowProtected =
env->GetBooleanField(captureArgsObject, gCaptureArgsClassInfo.allowProtected);
captureArgs.uid = env->GetLongField(captureArgsObject, gCaptureArgsClassInfo.uid);
captureArgs.grayscale =
env->GetBooleanField(captureArgsObject, gCaptureArgsClassInfo.grayscale);
}
static DisplayCaptureArgs displayCaptureArgsFromObject(JNIEnv* env,
@@ -2032,12 +2038,14 @@ int register_android_view_SurfaceControl(JNIEnv* env)
gCaptureArgsClassInfo.pixelFormat = GetFieldIDOrDie(env, captureArgsClazz, "mPixelFormat", "I");
gCaptureArgsClassInfo.sourceCrop =
GetFieldIDOrDie(env, captureArgsClazz, "mSourceCrop", "Landroid/graphics/Rect;");
gCaptureArgsClassInfo.frameScale = GetFieldIDOrDie(env, captureArgsClazz, "mFrameScale", "F");
gCaptureArgsClassInfo.frameScaleX = GetFieldIDOrDie(env, captureArgsClazz, "mFrameScaleX", "F");
gCaptureArgsClassInfo.frameScaleY = GetFieldIDOrDie(env, captureArgsClazz, "mFrameScaleY", "F");
gCaptureArgsClassInfo.captureSecureLayers =
GetFieldIDOrDie(env, captureArgsClazz, "mCaptureSecureLayers", "Z");
gCaptureArgsClassInfo.allowProtected =
GetFieldIDOrDie(env, captureArgsClazz, "mAllowProtected", "Z");
gCaptureArgsClassInfo.uid = GetFieldIDOrDie(env, captureArgsClazz, "mUid", "J");
gCaptureArgsClassInfo.grayscale = GetFieldIDOrDie(env, captureArgsClazz, "mGrayscale", "Z");
jclass displayCaptureArgsClazz =
FindClassOrDie(env, "android/view/SurfaceControl$DisplayCaptureArgs");