diff options
| author | 2023-10-31 02:01:06 +0000 | |
|---|---|---|
| committer | 2023-11-07 22:48:57 +0000 | |
| commit | 417accdcaac72dffce9039c971cb867fcf279653 (patch) | |
| tree | cf9fb964f30abf7972b8584bd0d5ccdaa185b8cf /graphics/java | |
| parent | 10614f6487059a631cda474e820a6e6ff33e208d (diff) | |
refactor(force invert): use enum/intdef for force dark type in setForceDark() functions
This allows the RenderNode to differentiate between normal force dark
and force force-dark (force invert color). In the next CL we will treat
force invert slightly differently, not allowing devs to opt-out of force
dark in individual Views/RenderNodes.
This also sets us up to specify a "force light" mode for force invert,
if we ever need it.
Bug: 282821643
Test: atest ViewRootImplTest
Change-Id: I8cc0fe099cccabdd09ea072aca1e70527e91e1a8
Diffstat (limited to 'graphics/java')
| -rw-r--r-- | graphics/java/android/graphics/ForceDarkType.java | 60 | ||||
| -rw-r--r-- | graphics/java/android/graphics/HardwareRenderer.java | 12 |
2 files changed, 66 insertions, 6 deletions
diff --git a/graphics/java/android/graphics/ForceDarkType.java b/graphics/java/android/graphics/ForceDarkType.java new file mode 100644 index 000000000000..396b03703bb9 --- /dev/null +++ b/graphics/java/android/graphics/ForceDarkType.java @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.graphics; + +import android.annotation.IntDef; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * The style of force dark to use in {@link HardwareRenderer}. + * + * You must keep this in sync with the C++ enum ForceDarkType in + * frameworks/base/libs/hwui/utils/ForceDark.h + * + * @hide + */ +public class ForceDarkType { + /** + * Force dark disabled: normal, default operation. + * + * @hide + */ + public static final int NONE = 0; + + /** + * Use force dark + * @hide + */ + public static final int FORCE_DARK = 1; + + /** + * Force force-dark. {@see Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED} + * @hide */ + public static final int FORCE_INVERT_COLOR_DARK = 2; + + /** @hide */ + @IntDef({ + NONE, + FORCE_DARK, + FORCE_INVERT_COLOR_DARK, + }) + @Retention(RetentionPolicy.SOURCE) + public @interface ForceDarkTypeDef {} + +} diff --git a/graphics/java/android/graphics/HardwareRenderer.java b/graphics/java/android/graphics/HardwareRenderer.java index 8cd262e783d8..20e393eaee6d 100644 --- a/graphics/java/android/graphics/HardwareRenderer.java +++ b/graphics/java/android/graphics/HardwareRenderer.java @@ -182,7 +182,7 @@ public class HardwareRenderer { /** @hide */ protected RenderNode mRootNode; private boolean mOpaque = true; - private boolean mForceDark = false; + private int mForceDark = ForceDarkType.NONE; private @ActivityInfo.ColorMode int mColorMode = ActivityInfo.COLOR_MODE_DEFAULT; private float mDesiredSdrHdrRatio = 1f; @@ -571,10 +571,10 @@ public class HardwareRenderer { * Whether or not the force-dark feature should be used for this renderer. * @hide */ - public boolean setForceDark(boolean enable) { - if (mForceDark != enable) { - mForceDark = enable; - nSetForceDark(mNativeProxy, enable); + public boolean setForceDark(@ForceDarkType.ForceDarkTypeDef int type) { + if (mForceDark != type) { + mForceDark = type; + nSetForceDark(mNativeProxy, type); return true; } return false; @@ -1597,7 +1597,7 @@ public class HardwareRenderer { private static native void nAllocateBuffers(long nativeProxy); - private static native void nSetForceDark(long nativeProxy, boolean enabled); + private static native void nSetForceDark(long nativeProxy, int type); private static native void nSetDisplayDensityDpi(int densityDpi); |