Merge "Added new arguments for screenshot request" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
1999828918
@@ -750,18 +750,22 @@ public final class SurfaceControl implements Parcelable {
|
|||||||
private abstract static class CaptureArgs {
|
private abstract static class CaptureArgs {
|
||||||
private final int mPixelFormat;
|
private final int mPixelFormat;
|
||||||
private final Rect mSourceCrop = new Rect();
|
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 mCaptureSecureLayers;
|
||||||
private final boolean mAllowProtected;
|
private final boolean mAllowProtected;
|
||||||
private final long mUid;
|
private final long mUid;
|
||||||
|
private final boolean mGrayscale;
|
||||||
|
|
||||||
private CaptureArgs(Builder<? extends Builder<?>> builder) {
|
private CaptureArgs(Builder<? extends Builder<?>> builder) {
|
||||||
mPixelFormat = builder.mPixelFormat;
|
mPixelFormat = builder.mPixelFormat;
|
||||||
mSourceCrop.set(builder.mSourceCrop);
|
mSourceCrop.set(builder.mSourceCrop);
|
||||||
mFrameScale = builder.mFrameScale;
|
mFrameScaleX = builder.mFrameScaleX;
|
||||||
|
mFrameScaleY = builder.mFrameScaleY;
|
||||||
mCaptureSecureLayers = builder.mCaptureSecureLayers;
|
mCaptureSecureLayers = builder.mCaptureSecureLayers;
|
||||||
mAllowProtected = builder.mAllowProtected;
|
mAllowProtected = builder.mAllowProtected;
|
||||||
mUid = builder.mUid;
|
mUid = builder.mUid;
|
||||||
|
mGrayscale = builder.mGrayscale;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -772,10 +776,12 @@ public final class SurfaceControl implements Parcelable {
|
|||||||
abstract static class Builder<T extends Builder<T>> {
|
abstract static class Builder<T extends Builder<T>> {
|
||||||
private int mPixelFormat = PixelFormat.RGBA_8888;
|
private int mPixelFormat = PixelFormat.RGBA_8888;
|
||||||
private final Rect mSourceCrop = new Rect();
|
private final Rect mSourceCrop = new Rect();
|
||||||
private float mFrameScale = 1;
|
private float mFrameScaleX = 1;
|
||||||
|
private float mFrameScaleY = 1;
|
||||||
private boolean mCaptureSecureLayers;
|
private boolean mCaptureSecureLayers;
|
||||||
private boolean mAllowProtected;
|
private boolean mAllowProtected;
|
||||||
private long mUid = -1;
|
private long mUid = -1;
|
||||||
|
private boolean mGrayscale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The desired pixel format of the returned buffer.
|
* 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.
|
* The desired scale of the returned buffer. The raw screen will be scaled up/down.
|
||||||
*/
|
*/
|
||||||
public T setFrameScale(float frameScale) {
|
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();
|
return getThis();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -833,6 +850,14 @@ public final class SurfaceControl implements Parcelable {
|
|||||||
return getThis();
|
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
|
* 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.
|
* The arguments class used to make layer capture requests.
|
||||||
*
|
*
|
||||||
* @see #nativeCaptureLayers(LayerCaptureArgs)
|
* @see #nativeCaptureLayers(LayerCaptureArgs, ScreenCaptureListener)
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public static class LayerCaptureArgs extends CaptureArgs {
|
public static class LayerCaptureArgs extends CaptureArgs {
|
||||||
|
|||||||
@@ -110,10 +110,12 @@ static struct {
|
|||||||
static struct {
|
static struct {
|
||||||
jfieldID pixelFormat;
|
jfieldID pixelFormat;
|
||||||
jfieldID sourceCrop;
|
jfieldID sourceCrop;
|
||||||
jfieldID frameScale;
|
jfieldID frameScaleX;
|
||||||
|
jfieldID frameScaleY;
|
||||||
jfieldID captureSecureLayers;
|
jfieldID captureSecureLayers;
|
||||||
jfieldID allowProtected;
|
jfieldID allowProtected;
|
||||||
jfieldID uid;
|
jfieldID uid;
|
||||||
|
jfieldID grayscale;
|
||||||
} gCaptureArgsClassInfo;
|
} gCaptureArgsClassInfo;
|
||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
@@ -380,13 +382,17 @@ static void getCaptureArgs(JNIEnv* env, jobject captureArgsObject, CaptureArgs&
|
|||||||
captureArgs.sourceCrop =
|
captureArgs.sourceCrop =
|
||||||
rectFromObj(env,
|
rectFromObj(env,
|
||||||
env->GetObjectField(captureArgsObject, gCaptureArgsClassInfo.sourceCrop));
|
env->GetObjectField(captureArgsObject, gCaptureArgsClassInfo.sourceCrop));
|
||||||
captureArgs.frameScale =
|
captureArgs.frameScaleX =
|
||||||
env->GetFloatField(captureArgsObject, gCaptureArgsClassInfo.frameScale);
|
env->GetFloatField(captureArgsObject, gCaptureArgsClassInfo.frameScaleX);
|
||||||
|
captureArgs.frameScaleY =
|
||||||
|
env->GetFloatField(captureArgsObject, gCaptureArgsClassInfo.frameScaleY);
|
||||||
captureArgs.captureSecureLayers =
|
captureArgs.captureSecureLayers =
|
||||||
env->GetBooleanField(captureArgsObject, gCaptureArgsClassInfo.captureSecureLayers);
|
env->GetBooleanField(captureArgsObject, gCaptureArgsClassInfo.captureSecureLayers);
|
||||||
captureArgs.allowProtected =
|
captureArgs.allowProtected =
|
||||||
env->GetBooleanField(captureArgsObject, gCaptureArgsClassInfo.allowProtected);
|
env->GetBooleanField(captureArgsObject, gCaptureArgsClassInfo.allowProtected);
|
||||||
captureArgs.uid = env->GetLongField(captureArgsObject, gCaptureArgsClassInfo.uid);
|
captureArgs.uid = env->GetLongField(captureArgsObject, gCaptureArgsClassInfo.uid);
|
||||||
|
captureArgs.grayscale =
|
||||||
|
env->GetBooleanField(captureArgsObject, gCaptureArgsClassInfo.grayscale);
|
||||||
}
|
}
|
||||||
|
|
||||||
static DisplayCaptureArgs displayCaptureArgsFromObject(JNIEnv* env,
|
static DisplayCaptureArgs displayCaptureArgsFromObject(JNIEnv* env,
|
||||||
@@ -2032,12 +2038,14 @@ int register_android_view_SurfaceControl(JNIEnv* env)
|
|||||||
gCaptureArgsClassInfo.pixelFormat = GetFieldIDOrDie(env, captureArgsClazz, "mPixelFormat", "I");
|
gCaptureArgsClassInfo.pixelFormat = GetFieldIDOrDie(env, captureArgsClazz, "mPixelFormat", "I");
|
||||||
gCaptureArgsClassInfo.sourceCrop =
|
gCaptureArgsClassInfo.sourceCrop =
|
||||||
GetFieldIDOrDie(env, captureArgsClazz, "mSourceCrop", "Landroid/graphics/Rect;");
|
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 =
|
gCaptureArgsClassInfo.captureSecureLayers =
|
||||||
GetFieldIDOrDie(env, captureArgsClazz, "mCaptureSecureLayers", "Z");
|
GetFieldIDOrDie(env, captureArgsClazz, "mCaptureSecureLayers", "Z");
|
||||||
gCaptureArgsClassInfo.allowProtected =
|
gCaptureArgsClassInfo.allowProtected =
|
||||||
GetFieldIDOrDie(env, captureArgsClazz, "mAllowProtected", "Z");
|
GetFieldIDOrDie(env, captureArgsClazz, "mAllowProtected", "Z");
|
||||||
gCaptureArgsClassInfo.uid = GetFieldIDOrDie(env, captureArgsClazz, "mUid", "J");
|
gCaptureArgsClassInfo.uid = GetFieldIDOrDie(env, captureArgsClazz, "mUid", "J");
|
||||||
|
gCaptureArgsClassInfo.grayscale = GetFieldIDOrDie(env, captureArgsClazz, "mGrayscale", "Z");
|
||||||
|
|
||||||
jclass displayCaptureArgsClazz =
|
jclass displayCaptureArgsClazz =
|
||||||
FindClassOrDie(env, "android/view/SurfaceControl$DisplayCaptureArgs");
|
FindClassOrDie(env, "android/view/SurfaceControl$DisplayCaptureArgs");
|
||||||
|
|||||||
Reference in New Issue
Block a user