diff options
-rw-r--r-- | api/current.txt | 33 | ||||
-rw-r--r-- | api/system-current.txt | 33 | ||||
-rw-r--r-- | api/test-current.txt | 33 | ||||
-rw-r--r-- | core/java/android/app/Activity.java | 2 | ||||
-rw-r--r-- | core/java/android/content/pm/ActivityInfo.java | 49 | ||||
-rw-r--r-- | core/java/android/content/pm/PackageParser.java | 3 | ||||
-rw-r--r-- | core/java/android/content/res/Configuration.java | 176 | ||||
-rw-r--r-- | core/java/android/view/Window.java | 23 | ||||
-rw-r--r-- | core/java/android/view/WindowManager.java | 47 | ||||
-rw-r--r-- | core/res/res/values/attrs_manifest.xml | 15 | ||||
-rw-r--r-- | core/res/res/values/public.xml | 1 | ||||
-rw-r--r-- | libs/androidfw/ResourceTypes.cpp | 58 | ||||
-rw-r--r-- | libs/androidfw/include/androidfw/ResourceTypes.h | 16 | ||||
-rw-r--r-- | libs/androidfw/tests/Config_test.cpp | 8 | ||||
-rw-r--r-- | tools/aapt/AaptConfig.cpp | 28 | ||||
-rw-r--r-- | tools/aapt/tests/AaptConfig_test.cpp | 8 | ||||
-rw-r--r-- | tools/aapt2/ConfigDescription.cpp | 42 | ||||
-rw-r--r-- | tools/aapt2/ConfigDescription_test.cpp | 8 |
18 files changed, 364 insertions, 219 deletions
diff --git a/api/current.txt b/api/current.txt index d8110203c8cd..a5062d87e935 100644 --- a/api/current.txt +++ b/api/current.txt @@ -408,6 +408,7 @@ package android { field public static final int colorForeground = 16842800; // 0x1010030 field public static final int colorForegroundInverse = 16843270; // 0x1010206 field public static final int colorLongPressedHighlight = 16843662; // 0x101038e + field public static final int colorMode = 16844108; // 0x101054c field public static final int colorMultiSelectHighlight = 16843665; // 0x1010391 field public static final int colorPressedHighlight = 16843661; // 0x101038d field public static final int colorPrimary = 16843827; // 0x1010433 @@ -9575,7 +9576,10 @@ package android.content.pm { method public int describeContents(); method public void dump(android.util.Printer, java.lang.String); method public final int getThemeResource(); - field public static final int CONFIG_COLORIMETRY = 16384; // 0x4000 + field public static final int COLOR_MODE_DEFAULT = 0; // 0x0 + field public static final int COLOR_MODE_HDR = 2; // 0x2 + field public static final int COLOR_MODE_WIDE_COLOR_GAMUT = 1; // 0x1 + field public static final int CONFIG_COLOR_MODE = 16384; // 0x4000 field public static final int CONFIG_DENSITY = 4096; // 0x1000 field public static final int CONFIG_FONT_SCALE = 1073741824; // 0x40000000 field public static final int CONFIG_KEYBOARD = 16; // 0x10 @@ -9636,6 +9640,7 @@ package android.content.pm { field public static final int SCREEN_ORIENTATION_USER_LANDSCAPE = 11; // 0xb field public static final int SCREEN_ORIENTATION_USER_PORTRAIT = 12; // 0xc field public static final int UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW = 1; // 0x1 + field public int colorMode; field public int configChanges; field public int documentLaunchMode; field public int flags; @@ -10611,16 +10616,16 @@ package android.content.res { method public void setToDefaults(); method public int updateFrom(android.content.res.Configuration); method public void writeToParcel(android.os.Parcel, int); - field public static final int COLORIMETRY_HDR_MASK = 12; // 0xc - field public static final int COLORIMETRY_HDR_NO = 4; // 0x4 - field public static final int COLORIMETRY_HDR_SHIFT = 2; // 0x2 - field public static final int COLORIMETRY_HDR_UNDEFINED = 0; // 0x0 - field public static final int COLORIMETRY_HDR_YES = 8; // 0x8 - field public static final int COLORIMETRY_UNDEFINED = 0; // 0x0 - field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_MASK = 3; // 0x3 - field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_NO = 1; // 0x1 - field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_UNDEFINED = 0; // 0x0 - field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_YES = 2; // 0x2 + field public static final int COLOR_MODE_HDR_MASK = 12; // 0xc + field public static final int COLOR_MODE_HDR_NO = 4; // 0x4 + field public static final int COLOR_MODE_HDR_SHIFT = 2; // 0x2 + field public static final int COLOR_MODE_HDR_UNDEFINED = 0; // 0x0 + field public static final int COLOR_MODE_HDR_YES = 8; // 0x8 + field public static final int COLOR_MODE_UNDEFINED = 0; // 0x0 + field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_MASK = 3; // 0x3 + field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_NO = 1; // 0x1 + field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_UNDEFINED = 0; // 0x0 + field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_YES = 2; // 0x2 field public static final android.os.Parcelable.Creator<android.content.res.Configuration> CREATOR; field public static final int DENSITY_DPI_UNDEFINED = 0; // 0x0 field public static final int HARDKEYBOARDHIDDEN_NO = 1; // 0x1 @@ -10686,7 +10691,7 @@ package android.content.res { field public static final int UI_MODE_TYPE_UNDEFINED = 0; // 0x0 field public static final int UI_MODE_TYPE_VR_HEADSET = 7; // 0x7 field public static final int UI_MODE_TYPE_WATCH = 6; // 0x6 - field public int colorimetry; + field public int colorMode; field public int densityDpi; field public float fontScale; field public int hardKeyboardHidden; @@ -45006,6 +45011,7 @@ package android.view { method public boolean getAllowReturnTransitionOverlap(); method public final android.view.WindowManager.LayoutParams getAttributes(); method public final android.view.Window.Callback getCallback(); + method public int getColorMode(); method public final android.view.Window getContainer(); method public android.transition.Scene getContentScene(); method public final android.content.Context getContext(); @@ -45062,6 +45068,7 @@ package android.view { method public abstract void setChildDrawable(int, android.graphics.drawable.Drawable); method public abstract void setChildInt(int, int); method public void setClipToOutline(boolean); + method public void setColorMode(int); method public void setContainer(android.view.Window); method public abstract void setContentView(int); method public abstract void setContentView(android.view.View); @@ -45260,8 +45267,10 @@ package android.view { method public final int copyFrom(android.view.WindowManager.LayoutParams); method public java.lang.String debug(java.lang.String); method public int describeContents(); + method public int getColorMode(); method public final java.lang.CharSequence getTitle(); method public static boolean mayUseInputMethod(int); + method public void setColorMode(int); method public final void setTitle(java.lang.CharSequence); method public void writeToParcel(android.os.Parcel, int); field public static final int ALPHA_CHANGED = 128; // 0x80 diff --git a/api/system-current.txt b/api/system-current.txt index 5cd33ba3d7d5..52c25c55fe5c 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -517,6 +517,7 @@ package android { field public static final int colorForeground = 16842800; // 0x1010030 field public static final int colorForegroundInverse = 16843270; // 0x1010206 field public static final int colorLongPressedHighlight = 16843662; // 0x101038e + field public static final int colorMode = 16844108; // 0x101054c field public static final int colorMultiSelectHighlight = 16843665; // 0x1010391 field public static final int colorPressedHighlight = 16843661; // 0x101038d field public static final int colorPrimary = 16843827; // 0x1010433 @@ -9987,7 +9988,10 @@ package android.content.pm { method public int describeContents(); method public void dump(android.util.Printer, java.lang.String); method public final int getThemeResource(); - field public static final int CONFIG_COLORIMETRY = 16384; // 0x4000 + field public static final int COLOR_MODE_DEFAULT = 0; // 0x0 + field public static final int COLOR_MODE_HDR = 2; // 0x2 + field public static final int COLOR_MODE_WIDE_COLOR_GAMUT = 1; // 0x1 + field public static final int CONFIG_COLOR_MODE = 16384; // 0x4000 field public static final int CONFIG_DENSITY = 4096; // 0x1000 field public static final int CONFIG_FONT_SCALE = 1073741824; // 0x40000000 field public static final int CONFIG_KEYBOARD = 16; // 0x10 @@ -10048,6 +10052,7 @@ package android.content.pm { field public static final int SCREEN_ORIENTATION_USER_LANDSCAPE = 11; // 0xb field public static final int SCREEN_ORIENTATION_USER_PORTRAIT = 12; // 0xc field public static final int UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW = 1; // 0x1 + field public int colorMode; field public int configChanges; field public int documentLaunchMode; field public int flags; @@ -11167,16 +11172,16 @@ package android.content.res { method public void setToDefaults(); method public int updateFrom(android.content.res.Configuration); method public void writeToParcel(android.os.Parcel, int); - field public static final int COLORIMETRY_HDR_MASK = 12; // 0xc - field public static final int COLORIMETRY_HDR_NO = 4; // 0x4 - field public static final int COLORIMETRY_HDR_SHIFT = 2; // 0x2 - field public static final int COLORIMETRY_HDR_UNDEFINED = 0; // 0x0 - field public static final int COLORIMETRY_HDR_YES = 8; // 0x8 - field public static final int COLORIMETRY_UNDEFINED = 0; // 0x0 - field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_MASK = 3; // 0x3 - field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_NO = 1; // 0x1 - field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_UNDEFINED = 0; // 0x0 - field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_YES = 2; // 0x2 + field public static final int COLOR_MODE_HDR_MASK = 12; // 0xc + field public static final int COLOR_MODE_HDR_NO = 4; // 0x4 + field public static final int COLOR_MODE_HDR_SHIFT = 2; // 0x2 + field public static final int COLOR_MODE_HDR_UNDEFINED = 0; // 0x0 + field public static final int COLOR_MODE_HDR_YES = 8; // 0x8 + field public static final int COLOR_MODE_UNDEFINED = 0; // 0x0 + field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_MASK = 3; // 0x3 + field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_NO = 1; // 0x1 + field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_UNDEFINED = 0; // 0x0 + field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_YES = 2; // 0x2 field public static final android.os.Parcelable.Creator<android.content.res.Configuration> CREATOR; field public static final int DENSITY_DPI_UNDEFINED = 0; // 0x0 field public static final int HARDKEYBOARDHIDDEN_NO = 1; // 0x1 @@ -11242,7 +11247,7 @@ package android.content.res { field public static final int UI_MODE_TYPE_UNDEFINED = 0; // 0x0 field public static final int UI_MODE_TYPE_VR_HEADSET = 7; // 0x7 field public static final int UI_MODE_TYPE_WATCH = 6; // 0x6 - field public int colorimetry; + field public int colorMode; field public int densityDpi; field public float fontScale; field public int hardKeyboardHidden; @@ -48364,6 +48369,7 @@ package android.view { method public boolean getAllowReturnTransitionOverlap(); method public final android.view.WindowManager.LayoutParams getAttributes(); method public final android.view.Window.Callback getCallback(); + method public int getColorMode(); method public final android.view.Window getContainer(); method public android.transition.Scene getContentScene(); method public final android.content.Context getContext(); @@ -48420,6 +48426,7 @@ package android.view { method public abstract void setChildDrawable(int, android.graphics.drawable.Drawable); method public abstract void setChildInt(int, int); method public void setClipToOutline(boolean); + method public void setColorMode(int); method public void setContainer(android.view.Window); method public abstract void setContentView(int); method public abstract void setContentView(android.view.View); @@ -48619,9 +48626,11 @@ package android.view { method public final int copyFrom(android.view.WindowManager.LayoutParams); method public java.lang.String debug(java.lang.String); method public int describeContents(); + method public int getColorMode(); method public final java.lang.CharSequence getTitle(); method public final long getUserActivityTimeout(); method public static boolean mayUseInputMethod(int); + method public void setColorMode(int); method public final void setTitle(java.lang.CharSequence); method public final void setUserActivityTimeout(long); method public void writeToParcel(android.os.Parcel, int); diff --git a/api/test-current.txt b/api/test-current.txt index 94b4a000ed98..772fe1053402 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -408,6 +408,7 @@ package android { field public static final int colorForeground = 16842800; // 0x1010030 field public static final int colorForegroundInverse = 16843270; // 0x1010206 field public static final int colorLongPressedHighlight = 16843662; // 0x101038e + field public static final int colorMode = 16844108; // 0x101054c field public static final int colorMultiSelectHighlight = 16843665; // 0x1010391 field public static final int colorPressedHighlight = 16843661; // 0x101038d field public static final int colorPrimary = 16843827; // 0x1010433 @@ -9600,7 +9601,10 @@ package android.content.pm { method public int describeContents(); method public void dump(android.util.Printer, java.lang.String); method public final int getThemeResource(); - field public static final int CONFIG_COLORIMETRY = 16384; // 0x4000 + field public static final int COLOR_MODE_DEFAULT = 0; // 0x0 + field public static final int COLOR_MODE_HDR = 2; // 0x2 + field public static final int COLOR_MODE_WIDE_COLOR_GAMUT = 1; // 0x1 + field public static final int CONFIG_COLOR_MODE = 16384; // 0x4000 field public static final int CONFIG_DENSITY = 4096; // 0x1000 field public static final int CONFIG_FONT_SCALE = 1073741824; // 0x40000000 field public static final int CONFIG_KEYBOARD = 16; // 0x10 @@ -9661,6 +9665,7 @@ package android.content.pm { field public static final int SCREEN_ORIENTATION_USER_LANDSCAPE = 11; // 0xb field public static final int SCREEN_ORIENTATION_USER_PORTRAIT = 12; // 0xc field public static final int UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW = 1; // 0x1 + field public int colorMode; field public int configChanges; field public int documentLaunchMode; field public int flags; @@ -10643,16 +10648,16 @@ package android.content.res { method public void setToDefaults(); method public int updateFrom(android.content.res.Configuration); method public void writeToParcel(android.os.Parcel, int); - field public static final int COLORIMETRY_HDR_MASK = 12; // 0xc - field public static final int COLORIMETRY_HDR_NO = 4; // 0x4 - field public static final int COLORIMETRY_HDR_SHIFT = 2; // 0x2 - field public static final int COLORIMETRY_HDR_UNDEFINED = 0; // 0x0 - field public static final int COLORIMETRY_HDR_YES = 8; // 0x8 - field public static final int COLORIMETRY_UNDEFINED = 0; // 0x0 - field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_MASK = 3; // 0x3 - field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_NO = 1; // 0x1 - field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_UNDEFINED = 0; // 0x0 - field public static final int COLORIMETRY_WIDE_COLOR_GAMUT_YES = 2; // 0x2 + field public static final int COLOR_MODE_HDR_MASK = 12; // 0xc + field public static final int COLOR_MODE_HDR_NO = 4; // 0x4 + field public static final int COLOR_MODE_HDR_SHIFT = 2; // 0x2 + field public static final int COLOR_MODE_HDR_UNDEFINED = 0; // 0x0 + field public static final int COLOR_MODE_HDR_YES = 8; // 0x8 + field public static final int COLOR_MODE_UNDEFINED = 0; // 0x0 + field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_MASK = 3; // 0x3 + field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_NO = 1; // 0x1 + field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_UNDEFINED = 0; // 0x0 + field public static final int COLOR_MODE_WIDE_COLOR_GAMUT_YES = 2; // 0x2 field public static final android.os.Parcelable.Creator<android.content.res.Configuration> CREATOR; field public static final int DENSITY_DPI_UNDEFINED = 0; // 0x0 field public static final int HARDKEYBOARDHIDDEN_NO = 1; // 0x1 @@ -10718,7 +10723,7 @@ package android.content.res { field public static final int UI_MODE_TYPE_UNDEFINED = 0; // 0x0 field public static final int UI_MODE_TYPE_VR_HEADSET = 7; // 0x7 field public static final int UI_MODE_TYPE_WATCH = 6; // 0x6 - field public int colorimetry; + field public int colorMode; field public int densityDpi; field public float fontScale; field public int hardKeyboardHidden; @@ -45302,6 +45307,7 @@ package android.view { method public boolean getAllowReturnTransitionOverlap(); method public final android.view.WindowManager.LayoutParams getAttributes(); method public final android.view.Window.Callback getCallback(); + method public int getColorMode(); method public final android.view.Window getContainer(); method public android.transition.Scene getContentScene(); method public final android.content.Context getContext(); @@ -45358,6 +45364,7 @@ package android.view { method public abstract void setChildDrawable(int, android.graphics.drawable.Drawable); method public abstract void setChildInt(int, int); method public void setClipToOutline(boolean); + method public void setColorMode(int); method public void setContainer(android.view.Window); method public abstract void setContentView(int); method public abstract void setContentView(android.view.View); @@ -45556,8 +45563,10 @@ package android.view { method public final int copyFrom(android.view.WindowManager.LayoutParams); method public java.lang.String debug(java.lang.String); method public int describeContents(); + method public int getColorMode(); method public final java.lang.CharSequence getTitle(); method public static boolean mayUseInputMethod(int); + method public void setColorMode(int); method public final void setTitle(java.lang.CharSequence); method public void writeToParcel(android.os.Parcel, int); field public static final int ALPHA_CHANGED = 128; // 0x80 diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index a9d1cf6e490f..e6520dea78d5 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -6792,6 +6792,8 @@ public class Activity extends ContextThemeWrapper } mWindowManager = mWindow.getWindowManager(); mCurrentConfig = config; + + mWindow.setColorMode(info.colorMode); } /** @hide */ diff --git a/core/java/android/content/pm/ActivityInfo.java b/core/java/android/content/pm/ActivityInfo.java index 4bd091dae77e..f80879e9a787 100644 --- a/core/java/android/content/pm/ActivityInfo.java +++ b/core/java/android/content/pm/ActivityInfo.java @@ -220,6 +220,44 @@ public class ActivityInfo extends ComponentInfo public String requestedVrComponent; /** + * Value for {@link #colorMode} indicating that the activity should use the + * default color mode (sRGB, low dynamic range). + * + * @see android.R.attr#colorMode + */ + public static final int COLOR_MODE_DEFAULT = 0; + /** + * Value of {@link #colorMode} indicating that the activity should use a + * wide color gamut if the presentation display supports it. + * + * @see android.R.attr#colorMode + */ + public static final int COLOR_MODE_WIDE_COLOR_GAMUT = 1; + /** + * Value of {@link #colorMode} indicating that the activity should use a + * high dynamic range if the presentation display supports it. + * + * @see android.R.attr#colorMode + */ + public static final int COLOR_MODE_HDR = 2; + + /** @hide */ + @IntDef({ + COLOR_MODE_DEFAULT, + COLOR_MODE_WIDE_COLOR_GAMUT, + COLOR_MODE_HDR, + }) + @Retention(RetentionPolicy.SOURCE) + public @interface ColorMode {} + + /** + * The color mode requested by this activity. The target display may not be + * able to honor the request. + */ + @ColorMode + public int colorMode = COLOR_MODE_DEFAULT; + + /** * Bit in {@link #flags} indicating whether this activity is able to * run in multiple processes. If * true, the system may instantiate it in the some process as the @@ -566,7 +604,7 @@ public class ActivityInfo extends ComponentInfo CONFIG_SMALLEST_SCREEN_SIZE, CONFIG_DENSITY, CONFIG_LAYOUT_DIRECTION, - CONFIG_COLORIMETRY, + CONFIG_COLOR_MODE, CONFIG_FONT_SCALE, }) @Retention(RetentionPolicy.SOURCE) @@ -675,7 +713,7 @@ public class ActivityInfo extends ComponentInfo * can itself handle the change to the display color gamut or dynamic * range. Set from the {@link android.R.attr#configChanges} attribute. */ - public static final int CONFIG_COLORIMETRY = 0x4000; + public static final int CONFIG_COLOR_MODE = 0x4000; /** * Bit in {@link #configChanges} that indicates that the activity * can itself handle asset path changes. Set from the {@link android.R.attr#configChanges} @@ -713,7 +751,7 @@ public class ActivityInfo extends ComponentInfo Configuration.NATIVE_CONFIG_SMALLEST_SCREEN_SIZE, // SMALLEST SCREEN SIZE Configuration.NATIVE_CONFIG_DENSITY, // DENSITY Configuration.NATIVE_CONFIG_LAYOUTDIR, // LAYOUT DIRECTION - Configuration.NATIVE_CONFIG_COLORIMETRY, // COLORIMETRY + Configuration.NATIVE_CONFIG_COLOR_MODE, // COLOR_MODE }; /** @@ -770,7 +808,7 @@ public class ActivityInfo extends ComponentInfo * {@link #CONFIG_KEYBOARD}, {@link #CONFIG_NAVIGATION}, * {@link #CONFIG_ORIENTATION}, {@link #CONFIG_SCREEN_LAYOUT}, * {@link #CONFIG_DENSITY}, {@link #CONFIG_LAYOUT_DIRECTION} and - * {@link #CONFIG_COLORIMETRY}. + * {@link #CONFIG_COLOR_MODE}. * Set from the {@link android.R.attr#configChanges} attribute. */ public int configChanges; @@ -873,6 +911,7 @@ public class ActivityInfo extends ComponentInfo resizeMode = orig.resizeMode; requestedVrComponent = orig.requestedVrComponent; rotationAnimation = orig.rotationAnimation; + colorMode = orig.colorMode; } /** @@ -1055,6 +1094,7 @@ public class ActivityInfo extends ComponentInfo dest.writeInt(resizeMode); dest.writeString(requestedVrComponent); dest.writeInt(rotationAnimation); + dest.writeInt(colorMode); } public static final Parcelable.Creator<ActivityInfo> CREATOR @@ -1090,6 +1130,7 @@ public class ActivityInfo extends ComponentInfo resizeMode = source.readInt(); requestedVrComponent = source.readString(); rotationAnimation = source.readInt(); + colorMode = source.readInt(); } /** diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index ca3011e0c7fb..87d6ba3e3454 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -4020,6 +4020,9 @@ public class PackageParser { a.info.rotationAnimation = sa.getInt(R.styleable.AndroidManifestActivity_rotationAnimation, ROTATION_ANIMATION_ROTATE); + + a.info.colorMode = sa.getInt(R.styleable.AndroidManifestActivity_colorMode, + ActivityInfo.COLOR_MODE_DEFAULT); } else { a.info.launchMode = ActivityInfo.LAUNCH_MULTIPLE; a.info.configChanges = 0; diff --git a/core/java/android/content/res/Configuration.java b/core/java/android/content/res/Configuration.java index a81329d9ee67..99fbee1ea3cc 100644 --- a/core/java/android/content/res/Configuration.java +++ b/core/java/android/content/res/Configuration.java @@ -102,66 +102,66 @@ public final class Configuration implements Parcelable, Comparable<Configuration public boolean userSetLocale; - /** Constant for {@link #colorimetry}: bits that encode whether the screen is wide gamut. */ - public static final int COLORIMETRY_WIDE_COLOR_GAMUT_MASK = 0x3; + /** Constant for {@link #colorMode}: bits that encode whether the screen is wide gamut. */ + public static final int COLOR_MODE_WIDE_COLOR_GAMUT_MASK = 0x3; /** - * Constant for {@link #colorimetry}: a {@link #COLORIMETRY_WIDE_COLOR_GAMUT_MASK} value + * Constant for {@link #colorMode}: a {@link #COLOR_MODE_WIDE_COLOR_GAMUT_MASK} value * indicating that it is unknown whether or not the screen is wide gamut. */ - public static final int COLORIMETRY_WIDE_COLOR_GAMUT_UNDEFINED = 0x0; + public static final int COLOR_MODE_WIDE_COLOR_GAMUT_UNDEFINED = 0x0; /** - * Constant for {@link #colorimetry}: a {@link #COLORIMETRY_WIDE_COLOR_GAMUT_MASK} value + * Constant for {@link #colorMode}: a {@link #COLOR_MODE_WIDE_COLOR_GAMUT_MASK} value * indicating that the screen is not wide gamut. * <p>Corresponds to the <code>-nowidecg</code> resource qualifier.</p> */ - public static final int COLORIMETRY_WIDE_COLOR_GAMUT_NO = 0x1; + public static final int COLOR_MODE_WIDE_COLOR_GAMUT_NO = 0x1; /** - * Constant for {@link #colorimetry}: a {@link #COLORIMETRY_WIDE_COLOR_GAMUT_MASK} value + * Constant for {@link #colorMode}: a {@link #COLOR_MODE_WIDE_COLOR_GAMUT_MASK} value * indicating that the screen is wide gamut. * <p>Corresponds to the <code>-widecg</code> resource qualifier.</p> */ - public static final int COLORIMETRY_WIDE_COLOR_GAMUT_YES = 0x2; + public static final int COLOR_MODE_WIDE_COLOR_GAMUT_YES = 0x2; - /** Constant for {@link #colorimetry}: bits that encode whether the dynamic range of the screen. */ - public static final int COLORIMETRY_HDR_MASK = 0xc; - /** Constant for {@link #colorimetry}: bits shift to get the screen dynamic range. */ - public static final int COLORIMETRY_HDR_SHIFT = 2; + /** Constant for {@link #colorMode}: bits that encode whether the dynamic range of the screen. */ + public static final int COLOR_MODE_HDR_MASK = 0xc; + /** Constant for {@link #colorMode}: bits shift to get the screen dynamic range. */ + public static final int COLOR_MODE_HDR_SHIFT = 2; /** - * Constant for {@link #colorimetry}: a {@link #COLORIMETRY_HDR_MASK} value + * Constant for {@link #colorMode}: a {@link #COLOR_MODE_HDR_MASK} value * indicating that it is unknown whether or not the screen is HDR. */ - public static final int COLORIMETRY_HDR_UNDEFINED = 0x0; + public static final int COLOR_MODE_HDR_UNDEFINED = 0x0; /** - * Constant for {@link #colorimetry}: a {@link #COLORIMETRY_HDR_MASK} value + * Constant for {@link #colorMode}: a {@link #COLOR_MODE_HDR_MASK} value * indicating that the screen is not HDR (low/standard dynamic range). * <p>Corresponds to the <code>-lowdr</code> resource qualifier.</p> */ - public static final int COLORIMETRY_HDR_NO = 0x1 << COLORIMETRY_HDR_SHIFT; + public static final int COLOR_MODE_HDR_NO = 0x1 << COLOR_MODE_HDR_SHIFT; /** - * Constant for {@link #colorimetry}: a {@link #COLORIMETRY_HDR_MASK} value + * Constant for {@link #colorMode}: a {@link #COLOR_MODE_HDR_MASK} value * indicating that the screen is HDR (dynamic range). * <p>Corresponds to the <code>-highdr</code> resource qualifier.</p> */ - public static final int COLORIMETRY_HDR_YES = 0x2 << COLORIMETRY_HDR_SHIFT; + public static final int COLOR_MODE_HDR_YES = 0x2 << COLOR_MODE_HDR_SHIFT; - /** Constant for {@link #colorimetry}: a value indicating that colorimetry is undefined */ + /** Constant for {@link #colorMode}: a value indicating that the color mode is undefined */ @SuppressWarnings("PointlessBitwiseExpression") - public static final int COLORIMETRY_UNDEFINED = COLORIMETRY_WIDE_COLOR_GAMUT_UNDEFINED | - COLORIMETRY_HDR_UNDEFINED; + public static final int COLOR_MODE_UNDEFINED = COLOR_MODE_WIDE_COLOR_GAMUT_UNDEFINED | + COLOR_MODE_HDR_UNDEFINED; /** * Bit mask of for color capabilities of the screen. Currently there are two fields: - * <p>The {@link #COLORIMETRY_WIDE_COLOR_GAMUT_MASK} bits define the color gamut of + * <p>The {@link #COLOR_MODE_WIDE_COLOR_GAMUT_MASK} bits define the color gamut of * the screen. They may be one of - * {@link #COLORIMETRY_WIDE_COLOR_GAMUT_NO} or {@link #COLORIMETRY_WIDE_COLOR_GAMUT_YES}.</p> + * {@link #COLOR_MODE_WIDE_COLOR_GAMUT_NO} or {@link #COLOR_MODE_WIDE_COLOR_GAMUT_YES}.</p> * - * <p>The {@link #COLORIMETRY_HDR_MASK} defines the dynamic range of the screen. They may be - * one of {@link #COLORIMETRY_HDR_NO} or {@link #COLORIMETRY_HDR_YES}.</p> + * <p>The {@link #COLOR_MODE_HDR_MASK} defines the dynamic range of the screen. They may be + * one of {@link #COLOR_MODE_HDR_NO} or {@link #COLOR_MODE_HDR_YES}.</p> * * <p>See <a href="{@docRoot}guide/practices/screens_support.html">Supporting * Multiple Screens</a> for more information.</p> */ - public int colorimetry; + public int colorMode; /** Constant for {@link #screenLayout}: bits that encode the size. */ public static final int SCREENLAYOUT_SIZE_MASK = 0x0f; @@ -393,8 +393,8 @@ public final class Configuration implements Parcelable, Comparable<Configuration if ((diff & ActivityInfo.CONFIG_SCREEN_LAYOUT) != 0) { list.add("CONFIG_SCREEN_LAYOUT"); } - if ((diff & ActivityInfo.CONFIG_COLORIMETRY) != 0) { - list.add("CONFIG_COLORIMETRY"); + if ((diff & ActivityInfo.CONFIG_COLOR_MODE) != 0) { + list.add("CONFIG_COLOR_MODE"); } if ((diff & ActivityInfo.CONFIG_UI_MODE) != 0) { list.add("CONFIG_UI_MODE"); @@ -776,7 +776,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration NATIVE_CONFIG_UI_MODE, NATIVE_CONFIG_SMALLEST_SCREEN_SIZE, NATIVE_CONFIG_LAYOUTDIR, - NATIVE_CONFIG_COLORIMETRY, + NATIVE_CONFIG_COLOR_MODE, }) @Retention(RetentionPolicy.SOURCE) public @interface NativeConfig {} @@ -813,8 +813,8 @@ public final class Configuration implements Parcelable, Comparable<Configuration public static final int NATIVE_CONFIG_SMALLEST_SCREEN_SIZE = 0x2000; /** @hide Native-specific bit mask for LAYOUTDIR config ; DO NOT USE UNLESS YOU ARE SURE.*/ public static final int NATIVE_CONFIG_LAYOUTDIR = 0x4000; - /** @hide Native-specific bit mask for COLORIMETRY config ; DO NOT USE UNLESS YOU ARE SURE.*/ - public static final int NATIVE_CONFIG_COLORIMETRY = 0x10000; + /** @hide Native-specific bit mask for COLOR_MODE config ; DO NOT USE UNLESS YOU ARE SURE.*/ + public static final int NATIVE_CONFIG_COLOR_MODE = 0x10000; /** * <p>Construct an invalid Configuration. This state is only suitable for constructing a @@ -873,7 +873,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration navigationHidden = o.navigationHidden; orientation = o.orientation; screenLayout = o.screenLayout; - colorimetry = o.colorimetry; + colorMode = o.colorMode; uiMode = o.uiMode; screenWidthDp = o.screenWidthDp; screenHeightDp = o.screenHeightDp; @@ -954,19 +954,19 @@ public final class Configuration implements Parcelable, Comparable<Configuration default: sb.append(" layoutLong="); sb.append(screenLayout&SCREENLAYOUT_LONG_MASK); break; } - switch ((colorimetry&COLORIMETRY_HDR_MASK)) { - case COLORIMETRY_HDR_UNDEFINED: sb.append(" ?ldr"); break; // most likely not HDR - case COLORIMETRY_HDR_NO: /* ldr is not interesting to print */ break; - case COLORIMETRY_HDR_YES: sb.append(" hdr"); break; + switch ((colorMode &COLOR_MODE_HDR_MASK)) { + case COLOR_MODE_HDR_UNDEFINED: sb.append(" ?ldr"); break; // most likely not HDR + case COLOR_MODE_HDR_NO: /* ldr is not interesting to print */ break; + case COLOR_MODE_HDR_YES: sb.append(" hdr"); break; default: sb.append(" dynamicRange="); - sb.append(colorimetry&COLORIMETRY_HDR_MASK); break; + sb.append(colorMode &COLOR_MODE_HDR_MASK); break; } - switch ((colorimetry&COLORIMETRY_WIDE_COLOR_GAMUT_MASK)) { - case COLORIMETRY_WIDE_COLOR_GAMUT_UNDEFINED: sb.append(" ?wideColorGamut"); break; - case COLORIMETRY_WIDE_COLOR_GAMUT_NO: /* not wide is not interesting to print */ break; - case COLORIMETRY_WIDE_COLOR_GAMUT_YES: sb.append(" widecg"); break; + switch ((colorMode &COLOR_MODE_WIDE_COLOR_GAMUT_MASK)) { + case COLOR_MODE_WIDE_COLOR_GAMUT_UNDEFINED: sb.append(" ?wideColorGamut"); break; + case COLOR_MODE_WIDE_COLOR_GAMUT_NO: /* not wide is not interesting to print */ break; + case COLOR_MODE_WIDE_COLOR_GAMUT_YES: sb.append(" widecg"); break; default: sb.append(" wideColorGamut="); - sb.append(colorimetry&COLORIMETRY_WIDE_COLOR_GAMUT_MASK); break; + sb.append(colorMode &COLOR_MODE_WIDE_COLOR_GAMUT_MASK); break; } switch (orientation) { case ORIENTATION_UNDEFINED: sb.append(" ?orien"); break; @@ -1059,7 +1059,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration navigationHidden = NAVIGATIONHIDDEN_UNDEFINED; orientation = ORIENTATION_UNDEFINED; screenLayout = SCREENLAYOUT_UNDEFINED; - colorimetry = COLORIMETRY_UNDEFINED; + colorMode = COLOR_MODE_UNDEFINED; uiMode = UI_MODE_TYPE_UNDEFINED; screenWidthDp = compatScreenWidthDp = SCREEN_WIDTH_DP_UNDEFINED; screenHeightDp = compatScreenHeightDp = SCREEN_HEIGHT_DP_UNDEFINED; @@ -1195,21 +1195,21 @@ public final class Configuration implements Parcelable, Comparable<Configuration | (delta.screenLayout & SCREENLAYOUT_COMPAT_NEEDED); } - if (((delta.colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK) != - COLORIMETRY_WIDE_COLOR_GAMUT_UNDEFINED) - && (delta.colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK) - != (colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK)) { - changed |= ActivityInfo.CONFIG_COLORIMETRY; - colorimetry = (colorimetry & ~COLORIMETRY_WIDE_COLOR_GAMUT_MASK) - | (delta.colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK); + if (((delta.colorMode & COLOR_MODE_WIDE_COLOR_GAMUT_MASK) != + COLOR_MODE_WIDE_COLOR_GAMUT_UNDEFINED) + && (delta.colorMode & COLOR_MODE_WIDE_COLOR_GAMUT_MASK) + != (colorMode & COLOR_MODE_WIDE_COLOR_GAMUT_MASK)) { + changed |= ActivityInfo.CONFIG_COLOR_MODE; + colorMode = (colorMode & ~COLOR_MODE_WIDE_COLOR_GAMUT_MASK) + | (delta.colorMode & COLOR_MODE_WIDE_COLOR_GAMUT_MASK); } - if (((delta.colorimetry & COLORIMETRY_HDR_MASK) != COLORIMETRY_HDR_UNDEFINED) - && (delta.colorimetry & COLORIMETRY_HDR_MASK) - != (colorimetry & COLORIMETRY_HDR_MASK)) { - changed |= ActivityInfo.CONFIG_COLORIMETRY; - colorimetry = (colorimetry & ~COLORIMETRY_HDR_MASK) - | (delta.colorimetry & COLORIMETRY_HDR_MASK); + if (((delta.colorMode & COLOR_MODE_HDR_MASK) != COLOR_MODE_HDR_UNDEFINED) + && (delta.colorMode & COLOR_MODE_HDR_MASK) + != (colorMode & COLOR_MODE_HDR_MASK)) { + changed |= ActivityInfo.CONFIG_COLOR_MODE; + colorMode = (colorMode & ~COLOR_MODE_HDR_MASK) + | (delta.colorMode & COLOR_MODE_HDR_MASK); } if (delta.uiMode != (UI_MODE_TYPE_UNDEFINED|UI_MODE_NIGHT_UNDEFINED) @@ -1362,17 +1362,17 @@ public final class Configuration implements Parcelable, Comparable<Configuration changed |= ActivityInfo.CONFIG_SCREEN_LAYOUT; } if ((compareUndefined || - (delta.colorimetry & COLORIMETRY_HDR_MASK) != COLORIMETRY_HDR_UNDEFINED) - && (colorimetry & COLORIMETRY_HDR_MASK) != - (delta.colorimetry & COLORIMETRY_HDR_MASK)) { - changed |= ActivityInfo.CONFIG_COLORIMETRY; + (delta.colorMode & COLOR_MODE_HDR_MASK) != COLOR_MODE_HDR_UNDEFINED) + && (colorMode & COLOR_MODE_HDR_MASK) != + (delta.colorMode & COLOR_MODE_HDR_MASK)) { + changed |= ActivityInfo.CONFIG_COLOR_MODE; } if ((compareUndefined || - (delta.colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK) != - COLORIMETRY_WIDE_COLOR_GAMUT_UNDEFINED) - && (colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK) != - (delta.colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK)) { - changed |= ActivityInfo.CONFIG_COLORIMETRY; + (delta.colorMode & COLOR_MODE_WIDE_COLOR_GAMUT_MASK) != + COLOR_MODE_WIDE_COLOR_GAMUT_UNDEFINED) + && (colorMode & COLOR_MODE_WIDE_COLOR_GAMUT_MASK) != + (delta.colorMode & COLOR_MODE_WIDE_COLOR_GAMUT_MASK)) { + changed |= ActivityInfo.CONFIG_COLOR_MODE; } if ((compareUndefined || delta.uiMode != (UI_MODE_TYPE_UNDEFINED|UI_MODE_NIGHT_UNDEFINED)) && uiMode != delta.uiMode) { @@ -1485,7 +1485,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration dest.writeInt(navigationHidden); dest.writeInt(orientation); dest.writeInt(screenLayout); - dest.writeInt(colorimetry); + dest.writeInt(colorMode); dest.writeInt(uiMode); dest.writeInt(screenWidthDp); dest.writeInt(screenHeightDp); @@ -1520,7 +1520,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration navigationHidden = source.readInt(); orientation = source.readInt(); screenLayout = source.readInt(); - colorimetry = source.readInt(); + colorMode = source.readInt(); uiMode = source.readInt(); screenWidthDp = source.readInt(); screenHeightDp = source.readInt(); @@ -1602,7 +1602,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration if (n != 0) return n; n = this.orientation - that.orientation; if (n != 0) return n; - n = this.colorimetry - that.colorimetry; + n = this.colorMode - that.colorMode; if (n != 0) return n; n = this.screenLayout - that.screenLayout; if (n != 0) return n; @@ -1649,7 +1649,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration result = 31 * result + navigationHidden; result = 31 * result + orientation; result = 31 * result + screenLayout; - result = 31 * result + colorimetry; + result = 31 * result + colorMode; result = 31 * result + uiMode; result = 31 * result + screenWidthDp; result = 31 * result + screenHeightDp; @@ -1763,7 +1763,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration * @return true if the screen has a wide color gamut, false otherwise */ public boolean isScreenWideColorGamut() { - return (colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK) == COLORIMETRY_WIDE_COLOR_GAMUT_YES; + return (colorMode & COLOR_MODE_WIDE_COLOR_GAMUT_MASK) == COLOR_MODE_WIDE_COLOR_GAMUT_YES; } /** @@ -1772,7 +1772,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration * @return true if the screen has a high dynamic range, false otherwise */ public boolean isScreenHdr() { - return (colorimetry & COLORIMETRY_HDR_MASK) == COLORIMETRY_HDR_YES; + return (colorMode & COLOR_MODE_HDR_MASK) == COLOR_MODE_HDR_YES; } /** @@ -1907,22 +1907,22 @@ public final class Configuration implements Parcelable, Comparable<Configuration break; } - switch (config.colorimetry & Configuration.COLORIMETRY_HDR_MASK) { - case Configuration.COLORIMETRY_HDR_YES: + switch (config.colorMode & Configuration.COLOR_MODE_HDR_MASK) { + case Configuration.COLOR_MODE_HDR_YES: parts.add("highdr"); break; - case Configuration.COLORIMETRY_HDR_NO: + case Configuration.COLOR_MODE_HDR_NO: parts.add("lowdr"); break; default: break; } - switch (config.colorimetry & Configuration.COLORIMETRY_WIDE_COLOR_GAMUT_MASK) { - case Configuration.COLORIMETRY_WIDE_COLOR_GAMUT_YES: + switch (config.colorMode & Configuration.COLOR_MODE_WIDE_COLOR_GAMUT_MASK) { + case Configuration.COLOR_MODE_WIDE_COLOR_GAMUT_YES: parts.add("widecg"); break; - case Configuration.COLORIMETRY_WIDE_COLOR_GAMUT_NO: + case Configuration.COLOR_MODE_WIDE_COLOR_GAMUT_NO: parts.add("nowidecg"); break; default: @@ -2154,14 +2154,14 @@ public final class Configuration implements Parcelable, Comparable<Configuration delta.screenLayout |= change.screenLayout & SCREENLAYOUT_ROUND_MASK; } - if ((base.colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK) != - (change.colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK)) { - delta.colorimetry |= change.colorimetry & COLORIMETRY_WIDE_COLOR_GAMUT_MASK; + if ((base.colorMode & COLOR_MODE_WIDE_COLOR_GAMUT_MASK) != + (change.colorMode & COLOR_MODE_WIDE_COLOR_GAMUT_MASK)) { + delta.colorMode |= change.colorMode & COLOR_MODE_WIDE_COLOR_GAMUT_MASK; } - if ((base.colorimetry & COLORIMETRY_HDR_MASK) != - (change.colorimetry & COLORIMETRY_HDR_MASK)) { - delta.colorimetry |= change.colorimetry & COLORIMETRY_HDR_MASK; + if ((base.colorMode & COLOR_MODE_HDR_MASK) != + (change.colorMode & COLOR_MODE_HDR_MASK)) { + delta.colorMode |= change.colorMode & COLOR_MODE_HDR_MASK; } if ((base.uiMode & UI_MODE_TYPE_MASK) != (change.uiMode & UI_MODE_TYPE_MASK)) { @@ -2206,7 +2206,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration private static final String XML_ATTR_NAVIGATION_HIDDEN = "navHid"; private static final String XML_ATTR_ORIENTATION = "ori"; private static final String XML_ATTR_SCREEN_LAYOUT = "scrLay"; - private static final String XML_ATTR_COLORIMETRY = "clrMtry"; + private static final String XML_ATTR_COLOR_MODE = "clrMod"; private static final String XML_ATTR_UI_MODE = "ui"; private static final String XML_ATTR_SCREEN_WIDTH = "width"; private static final String XML_ATTR_SCREEN_HEIGHT = "height"; @@ -2249,8 +2249,8 @@ public final class Configuration implements Parcelable, Comparable<Configuration ORIENTATION_UNDEFINED); configOut.screenLayout = XmlUtils.readIntAttribute(parser, XML_ATTR_SCREEN_LAYOUT, SCREENLAYOUT_UNDEFINED); - configOut.colorimetry = XmlUtils.readIntAttribute(parser, XML_ATTR_COLORIMETRY, - COLORIMETRY_UNDEFINED); + configOut.colorMode = XmlUtils.readIntAttribute(parser, XML_ATTR_COLOR_MODE, + COLOR_MODE_UNDEFINED); configOut.uiMode = XmlUtils.readIntAttribute(parser, XML_ATTR_UI_MODE, 0); configOut.screenWidthDp = XmlUtils.readIntAttribute(parser, XML_ATTR_SCREEN_WIDTH, SCREEN_WIDTH_DP_UNDEFINED); @@ -2313,8 +2313,8 @@ public final class Configuration implements Parcelable, Comparable<Configuration if (config.screenLayout != SCREENLAYOUT_UNDEFINED) { XmlUtils.writeIntAttribute(xml, XML_ATTR_SCREEN_LAYOUT, config.screenLayout); } - if (config.colorimetry != COLORIMETRY_UNDEFINED) { - XmlUtils.writeIntAttribute(xml, XML_ATTR_COLORIMETRY, config.colorimetry); + if (config.colorMode != COLOR_MODE_UNDEFINED) { + XmlUtils.writeIntAttribute(xml, XML_ATTR_COLOR_MODE, config.colorMode); } if (config.uiMode != 0) { XmlUtils.writeIntAttribute(xml, XML_ATTR_UI_MODE, config.uiMode); diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java index 8bc988d8de1a..e2bdd976980a 100644 --- a/core/java/android/view/Window.java +++ b/core/java/android/view/Window.java @@ -27,6 +27,7 @@ import android.annotation.Nullable; import android.annotation.StyleRes; import android.annotation.SystemApi; import android.content.Context; +import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.TypedArray; @@ -1128,6 +1129,28 @@ public abstract class Window { } /** + * <p>Set the color mode of the window. Setting the color mode might + * override the window's pixel {@link WindowManager.LayoutParams#format format}.</p> + * + * <p>The color mode must be one of {@link ActivityInfo#COLOR_MODE_DEFAULT}, + * {@link ActivityInfo#COLOR_MODE_WIDE_COLOR_GAMUT} or {@link ActivityInfo#COLOR_MODE_HDR}.</p> + */ + public void setColorMode(@ActivityInfo.ColorMode int colorMode) { + final WindowManager.LayoutParams attrs = getAttributes(); + attrs.setColorMode(colorMode); + dispatchWindowAttributesChanged(attrs); + } + + /** + * Returns the color mode of the window, one of {@link ActivityInfo#COLOR_MODE_DEFAULT}, + * {@link ActivityInfo#COLOR_MODE_WIDE_COLOR_GAMUT} or {@link ActivityInfo#COLOR_MODE_HDR}. + */ + @ActivityInfo.ColorMode + public int getColorMode() { + return getAttributes().getColorMode(); + } + + /** * Set the amount of dim behind the window when using * {@link WindowManager.LayoutParams#FLAG_DIM_BEHIND}. This overrides * the default dim amount of that is selected by the Window based on diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index e5a6ebdfb9e0..bf840e547079 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -22,7 +22,6 @@ import android.app.KeyguardManager; import android.app.Presentation; import android.content.Context; import android.content.pm.ActivityInfo; -import android.graphics.GraphicBuffer; import android.graphics.PixelFormat; import android.graphics.Rect; import android.os.IBinder; @@ -1577,7 +1576,8 @@ public interface WindowManager extends ViewManager { /** * The desired bitmap format. May be one of the constants in - * {@link android.graphics.PixelFormat}. Default is OPAQUE. + * {@link android.graphics.PixelFormat}. The choice of format + * might be overridden by {@link #setColorMode(int)}. Default is OPAQUE. */ public int format; @@ -1833,6 +1833,17 @@ public interface WindowManager extends ViewManager { */ public long hideTimeoutMilliseconds = -1; + /** + * The color mode requested by this window. The target display may + * not be able to honor the request. When the color mode is not set + * to {@link ActivityInfo#COLOR_MODE_DEFAULT}, it might override the + * pixel format specified in {@link #format}. + * + * @hide + */ + @ActivityInfo.ColorMode + private int mColorMode = ActivityInfo.COLOR_MODE_DEFAULT; + public LayoutParams() { super(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); type = TYPE_APPLICATION; @@ -1912,6 +1923,31 @@ public interface WindowManager extends ViewManager { preservePreviousSurfaceInsets = preservePrevious; } + /** + * <p>Set the color mode of the window. Setting the color mode might + * override the window's pixel {@link WindowManager.LayoutParams#format format}.</p> + * + * <p>The color mode must be one of {@link ActivityInfo#COLOR_MODE_DEFAULT}, + * {@link ActivityInfo#COLOR_MODE_WIDE_COLOR_GAMUT} or + * {@link ActivityInfo#COLOR_MODE_HDR}.</p> + * + * @see #getColorMode() + */ + public void setColorMode(@ActivityInfo.ColorMode int colorMode) { + mColorMode = colorMode; + } + + /** + * Returns the color mode of the window, one of {@link ActivityInfo#COLOR_MODE_DEFAULT}, + * {@link ActivityInfo#COLOR_MODE_WIDE_COLOR_GAMUT} or {@link ActivityInfo#COLOR_MODE_HDR}. + * + * @see #setColorMode(int) + */ + @ActivityInfo.ColorMode + public int getColorMode() { + return mColorMode; + } + /** @hide */ @SystemApi public final void setUserActivityTimeout(long timeout) { @@ -2268,9 +2304,11 @@ public interface WindowManager extends ViewManager { sb.append(','); sb.append(y); sb.append(")("); - sb.append((width== MATCH_PARENT ?"fill":(width==WRAP_CONTENT?"wrap":width))); + sb.append((width == MATCH_PARENT ? "fill" : (width == WRAP_CONTENT + ? "wrap" : String.valueOf(width)))); sb.append('x'); - sb.append((height== MATCH_PARENT ?"fill":(height==WRAP_CONTENT?"wrap":height))); + sb.append((height == MATCH_PARENT ? "fill" : (height == WRAP_CONTENT + ? "wrap" : String.valueOf(height)))); sb.append(")"); if (horizontalMargin != 0) { sb.append(" hm="); @@ -2367,6 +2405,7 @@ public interface WindowManager extends ViewManager { sb.append(" needsMenuKey="); sb.append(needsMenuKey); } + sb.append(" colorMode=").append(mColorMode); sb.append('}'); return sb.toString(); } diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index dfa672d6782c..f586a00a5907 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -864,9 +864,8 @@ <flag name="density" value="0x1000" /> <!-- The layout direction has changed. For example going from LTR to RTL. --> <flag name="layoutDirection" value="0x2000" /> - <!-- The colorimetry capabilities of the screen have changed (color gamut - or dynamic range). --> - <flag name="colorimetry" value="0x4000" /> + <!-- The color mode of the screen has changed (color gamut or dynamic range). --> + <flag name="colorMode" value="0x4000" /> <!-- The font scaling factor has changed, that is the user has selected a new global font size. --> <flag name="fontScale" value="0x40000000" /> @@ -2046,6 +2045,16 @@ <attr name="visibleToInstantApps" /> <!-- The code for this component is located in the given split. --> <attr name="splitName" /> + <!-- Specify the color mode the activity desires. The requested color mode may be ignored + depending on the capabilities of the display the activity is displayed on. --> + <attr name="colorMode"> + <!-- The default color mode (typically sRGB, low-dynamic range). --> + <enum name="default" value="0" /> + <!-- Wide color gamut color mode. --> + <enum name="wideColorGamut" value="1" /> + <!-- High dynamic range color mode. --> + <enum name="hdr" value="2" /> + </attr> </declare-styleable> <!-- The <code>activity-alias</code> tag declares a new diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 66dd1274632d..e387650ca2dd 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -2788,6 +2788,7 @@ <public name="restartOnConfigChanges" /> <public name="certDigest" /> <public name="splitName" /> + <public name="colorMode" /> </public-group> <public-group type="style" first-id="0x010302e0"> diff --git a/libs/androidfw/ResourceTypes.cpp b/libs/androidfw/ResourceTypes.cpp index a4bcc624ef31..763a178ed43b 100644 --- a/libs/androidfw/ResourceTypes.cpp +++ b/libs/androidfw/ResourceTypes.cpp @@ -1907,7 +1907,7 @@ int ResTable_config::compare(const ResTable_config& o) const { if (diff != 0) return diff; diff = (int32_t)(screenLayout2 - o.screenLayout2); if (diff != 0) return diff; - diff = (int32_t)(colorimetry - o.colorimetry); + diff = (int32_t)(colorMode - o.colorMode); if (diff != 0) return diff; diff = (int32_t)(uiMode - o.uiMode); if (diff != 0) return diff; @@ -1969,8 +1969,8 @@ int ResTable_config::compareLogical(const ResTable_config& o) const { if (screenLayout2 != o.screenLayout2) { return screenLayout2 < o.screenLayout2 ? -1 : 1; } - if (colorimetry != o.colorimetry) { - return colorimetry < o.colorimetry ? -1 : 1; + if (colorMode != o.colorMode) { + return colorMode < o.colorMode ? -1 : 1; } if (uiMode != o.uiMode) { return uiMode < o.uiMode ? -1 : 1; @@ -1997,8 +1997,8 @@ int ResTable_config::diff(const ResTable_config& o) const { if ((screenLayout & MASK_LAYOUTDIR) != (o.screenLayout & MASK_LAYOUTDIR)) diffs |= CONFIG_LAYOUTDIR; if ((screenLayout & ~MASK_LAYOUTDIR) != (o.screenLayout & ~MASK_LAYOUTDIR)) diffs |= CONFIG_SCREEN_LAYOUT; if ((screenLayout2 & MASK_SCREENROUND) != (o.screenLayout2 & MASK_SCREENROUND)) diffs |= CONFIG_SCREEN_ROUND; - if ((colorimetry & MASK_WIDE_COLOR_GAMUT) != (o.colorimetry & MASK_WIDE_COLOR_GAMUT)) diffs |= CONFIG_COLORIMETRY; - if ((colorimetry & MASK_HDR) != (o.colorimetry & MASK_HDR)) diffs |= CONFIG_COLORIMETRY; + if ((colorMode & MASK_WIDE_COLOR_GAMUT) != (o.colorMode & MASK_WIDE_COLOR_GAMUT)) diffs |= CONFIG_COLOR_MODE; + if ((colorMode & MASK_HDR) != (o.colorMode & MASK_HDR)) diffs |= CONFIG_COLOR_MODE; if (uiMode != o.uiMode) diffs |= CONFIG_UI_MODE; if (smallestScreenWidthDp != o.smallestScreenWidthDp) diffs |= CONFIG_SMALLEST_SCREEN_SIZE; if (screenSizeDp != o.screenSizeDp) diffs |= CONFIG_SCREEN_SIZE; @@ -2110,14 +2110,14 @@ bool ResTable_config::isMoreSpecificThan(const ResTable_config& o) const { } } - if (colorimetry || o.colorimetry) { - if (((colorimetry^o.colorimetry) & MASK_HDR) != 0) { - if (!(colorimetry & MASK_HDR)) return false; - if (!(o.colorimetry & MASK_HDR)) return true; + if (colorMode || o.colorMode) { + if (((colorMode^o.colorMode) & MASK_HDR) != 0) { + if (!(colorMode & MASK_HDR)) return false; + if (!(o.colorMode & MASK_HDR)) return true; } - if (((colorimetry^o.colorimetry) & MASK_WIDE_COLOR_GAMUT) != 0) { - if (!(colorimetry & MASK_WIDE_COLOR_GAMUT)) return false; - if (!(o.colorimetry & MASK_WIDE_COLOR_GAMUT)) return true; + if (((colorMode^o.colorMode) & MASK_WIDE_COLOR_GAMUT) != 0) { + if (!(colorMode & MASK_WIDE_COLOR_GAMUT)) return false; + if (!(o.colorMode & MASK_WIDE_COLOR_GAMUT)) return true; } } @@ -2408,14 +2408,14 @@ bool ResTable_config::isBetterThan(const ResTable_config& o, } } - if (colorimetry || o.colorimetry) { - if (((colorimetry^o.colorimetry) & MASK_WIDE_COLOR_GAMUT) != 0 && - (requested->colorimetry & MASK_WIDE_COLOR_GAMUT)) { - return colorimetry & MASK_WIDE_COLOR_GAMUT; + if (colorMode || o.colorMode) { + if (((colorMode^o.colorMode) & MASK_WIDE_COLOR_GAMUT) != 0 && + (requested->colorMode & MASK_WIDE_COLOR_GAMUT)) { + return colorMode & MASK_WIDE_COLOR_GAMUT; } - if (((colorimetry^o.colorimetry) & MASK_HDR) != 0 && - (requested->colorimetry & MASK_HDR)) { - return colorimetry & MASK_HDR; + if (((colorMode^o.colorMode) & MASK_HDR) != 0 && + (requested->colorMode & MASK_HDR)) { + return colorMode & MASK_HDR; } } @@ -2669,14 +2669,14 @@ bool ResTable_config::match(const ResTable_config& settings) const { return false; } - const int hdr = colorimetry & MASK_HDR; - const int setHdr = settings.colorimetry & MASK_HDR; + const int hdr = colorMode & MASK_HDR; + const int setHdr = settings.colorMode & MASK_HDR; if (hdr != 0 && hdr != setHdr) { return false; } - const int wideColorGamut = colorimetry & MASK_WIDE_COLOR_GAMUT; - const int setWideColorGamut = settings.colorimetry & MASK_WIDE_COLOR_GAMUT; + const int wideColorGamut = colorMode & MASK_WIDE_COLOR_GAMUT; + const int setWideColorGamut = settings.colorMode & MASK_WIDE_COLOR_GAMUT; if (wideColorGamut != 0 && wideColorGamut != setWideColorGamut) { return false; } @@ -3000,9 +3000,9 @@ String8 ResTable_config::toString() const { break; } } - if ((colorimetry&MASK_HDR) != 0) { + if ((colorMode&MASK_HDR) != 0) { if (res.size() > 0) res.append("-"); - switch (colorimetry&MASK_HDR) { + switch (colorMode&MASK_HDR) { case ResTable_config::HDR_NO: res.append("lowdr"); break; @@ -3010,13 +3010,13 @@ String8 ResTable_config::toString() const { res.append("highdr"); break; default: - res.appendFormat("hdr=%d", dtohs(colorimetry&MASK_HDR)); + res.appendFormat("hdr=%d", dtohs(colorMode&MASK_HDR)); break; } } - if ((colorimetry&MASK_WIDE_COLOR_GAMUT) != 0) { + if ((colorMode&MASK_WIDE_COLOR_GAMUT) != 0) { if (res.size() > 0) res.append("-"); - switch (colorimetry&MASK_WIDE_COLOR_GAMUT) { + switch (colorMode&MASK_WIDE_COLOR_GAMUT) { case ResTable_config::WIDE_COLOR_GAMUT_NO: res.append("nowidecg"); break; @@ -3024,7 +3024,7 @@ String8 ResTable_config::toString() const { res.append("widecg"); break; default: - res.appendFormat("wideColorGamut=%d", dtohs(colorimetry&MASK_WIDE_COLOR_GAMUT)); + res.appendFormat("wideColorGamut=%d", dtohs(colorMode&MASK_WIDE_COLOR_GAMUT)); break; } } diff --git a/libs/androidfw/include/androidfw/ResourceTypes.h b/libs/androidfw/include/androidfw/ResourceTypes.h index 1e4aee9d18e7..86ab123ff064 100644 --- a/libs/androidfw/include/androidfw/ResourceTypes.h +++ b/libs/androidfw/include/androidfw/ResourceTypes.h @@ -1147,25 +1147,25 @@ struct ResTable_config }; enum { - // colorimetry bits for wide-color gamut/narrow-color gamut. + // colorMode bits for wide-color gamut/narrow-color gamut. MASK_WIDE_COLOR_GAMUT = 0x03, WIDE_COLOR_GAMUT_ANY = ACONFIGURATION_WIDE_COLOR_GAMUT_ANY, WIDE_COLOR_GAMUT_NO = ACONFIGURATION_WIDE_COLOR_GAMUT_NO, WIDE_COLOR_GAMUT_YES = ACONFIGURATION_WIDE_COLOR_GAMUT_YES, - // colorimetry bits for HDR/LDR. + // colorMode bits for HDR/LDR. MASK_HDR = 0x0c, - SHIFT_COLORIMETRY_HDR = 2, - HDR_ANY = ACONFIGURATION_HDR_ANY << SHIFT_COLORIMETRY_HDR, - HDR_NO = ACONFIGURATION_HDR_NO << SHIFT_COLORIMETRY_HDR, - HDR_YES = ACONFIGURATION_HDR_YES << SHIFT_COLORIMETRY_HDR, + SHIFT_COLOR_MODE_HDR = 2, + HDR_ANY = ACONFIGURATION_HDR_ANY << SHIFT_COLOR_MODE_HDR, + HDR_NO = ACONFIGURATION_HDR_NO << SHIFT_COLOR_MODE_HDR, + HDR_YES = ACONFIGURATION_HDR_YES << SHIFT_COLOR_MODE_HDR, }; // An extension of screenConfig. union { struct { uint8_t screenLayout2; // Contains round/notround qualifier. - uint8_t colorimetry; // Wide-gamut, HDR, etc. + uint8_t colorMode; // Wide-gamut, HDR, etc. uint16_t screenConfigPad2; // Reserved padding. }; uint32_t screenConfig2; @@ -1208,7 +1208,7 @@ struct ResTable_config CONFIG_UI_MODE = ACONFIGURATION_UI_MODE, CONFIG_LAYOUTDIR = ACONFIGURATION_LAYOUTDIR, CONFIG_SCREEN_ROUND = ACONFIGURATION_SCREEN_ROUND, - CONFIG_COLORIMETRY = ACONFIGURATION_COLORIMETRY, + CONFIG_COLOR_MODE = ACONFIGURATION_COLOR_MODE, }; // Compare two configuration, returning CONFIG_* flags set for each value diff --git a/libs/androidfw/tests/Config_test.cpp b/libs/androidfw/tests/Config_test.cpp index 3e5aca7ab655..b54915f03c29 100644 --- a/libs/androidfw/tests/Config_test.cpp +++ b/libs/androidfw/tests/Config_test.cpp @@ -187,9 +187,9 @@ TEST(ConfigTest, ScreenIsWideGamut) { memset(&defaultConfig, 0, sizeof(defaultConfig)); ResTable_config wideGamutConfig = defaultConfig; - wideGamutConfig.colorimetry = ResTable_config::WIDE_COLOR_GAMUT_YES; + wideGamutConfig.colorMode = ResTable_config::WIDE_COLOR_GAMUT_YES; - EXPECT_EQ(defaultConfig.diff(wideGamutConfig), ResTable_config::CONFIG_COLORIMETRY); + EXPECT_EQ(defaultConfig.diff(wideGamutConfig), ResTable_config::CONFIG_COLOR_MODE); } TEST(ConfigTest, ScreenIsHdr) { @@ -197,9 +197,9 @@ TEST(ConfigTest, ScreenIsHdr) { memset(&defaultConfig, 0, sizeof(defaultConfig)); ResTable_config hdrConfig = defaultConfig; - hdrConfig.colorimetry = ResTable_config::HDR_YES; + hdrConfig.colorMode = ResTable_config::HDR_YES; - EXPECT_EQ(defaultConfig.diff(hdrConfig), ResTable_config::CONFIG_COLORIMETRY); + EXPECT_EQ(defaultConfig.diff(hdrConfig), ResTable_config::CONFIG_COLOR_MODE); } } // namespace android. diff --git a/tools/aapt/AaptConfig.cpp b/tools/aapt/AaptConfig.cpp index d0026a28ba16..0aca45ea8d60 100644 --- a/tools/aapt/AaptConfig.cpp +++ b/tools/aapt/AaptConfig.cpp @@ -267,8 +267,8 @@ void applyVersionForCompatibility(ConfigDescription* config) { uint16_t minSdk = 0; if ((config->uiMode & ResTable_config::MASK_UI_MODE_TYPE) == ResTable_config::UI_MODE_TYPE_VR_HEADSET - || config->colorimetry & ResTable_config::MASK_WIDE_COLOR_GAMUT - || config->colorimetry & ResTable_config::MASK_HDR) { + || config->colorMode & ResTable_config::MASK_WIDE_COLOR_GAMUT + || config->colorMode & ResTable_config::MASK_HDR) { minSdk = SDK_O; } else if (config->screenLayout2 & ResTable_config::MASK_SCREENROUND) { minSdk = SDK_MNC; @@ -451,18 +451,18 @@ bool parseScreenRound(const char* name, ResTable_config* out) { bool parseWideColorGamut(const char* name, ResTable_config* out) { if (strcmp(name, kWildcardName) == 0) { - if (out) out->colorimetry = - (out->colorimetry&~ResTable_config::MASK_WIDE_COLOR_GAMUT) + if (out) out->colorMode = + (out->colorMode&~ResTable_config::MASK_WIDE_COLOR_GAMUT) | ResTable_config::WIDE_COLOR_GAMUT_ANY; return true; } else if (strcmp(name, "widecg") == 0) { - if (out) out->colorimetry = - (out->colorimetry&~ResTable_config::MASK_WIDE_COLOR_GAMUT) + if (out) out->colorMode = + (out->colorMode&~ResTable_config::MASK_WIDE_COLOR_GAMUT) | ResTable_config::WIDE_COLOR_GAMUT_YES; return true; } else if (strcmp(name, "nowidecg") == 0) { - if (out) out->colorimetry = - (out->colorimetry&~ResTable_config::MASK_WIDE_COLOR_GAMUT) + if (out) out->colorMode = + (out->colorMode&~ResTable_config::MASK_WIDE_COLOR_GAMUT) | ResTable_config::WIDE_COLOR_GAMUT_NO; return true; } @@ -471,18 +471,18 @@ bool parseWideColorGamut(const char* name, ResTable_config* out) { bool parseHdr(const char* name, ResTable_config* out) { if (strcmp(name, kWildcardName) == 0) { - if (out) out->colorimetry = - (out->colorimetry&~ResTable_config::MASK_HDR) + if (out) out->colorMode = + (out->colorMode&~ResTable_config::MASK_HDR) | ResTable_config::HDR_ANY; return true; } else if (strcmp(name, "highdr") == 0) { - if (out) out->colorimetry = - (out->colorimetry&~ResTable_config::MASK_HDR) + if (out) out->colorMode = + (out->colorMode&~ResTable_config::MASK_HDR) | ResTable_config::HDR_YES; return true; } else if (strcmp(name, "lowdr") == 0) { - if (out) out->colorimetry = - (out->colorimetry&~ResTable_config::MASK_HDR) + if (out) out->colorMode = + (out->colorMode&~ResTable_config::MASK_HDR) | ResTable_config::HDR_NO; return true; } diff --git a/tools/aapt/tests/AaptConfig_test.cpp b/tools/aapt/tests/AaptConfig_test.cpp index 23f61e9e4b70..4f22fa581a88 100644 --- a/tools/aapt/tests/AaptConfig_test.cpp +++ b/tools/aapt/tests/AaptConfig_test.cpp @@ -103,13 +103,13 @@ TEST(AaptConfigTest, WideColorGamutQualifier) { ConfigDescription config; EXPECT_TRUE(TestParse("widecg", &config)); EXPECT_EQ(android::ResTable_config::WIDE_COLOR_GAMUT_YES, - config.colorimetry & android::ResTable_config::MASK_WIDE_COLOR_GAMUT); + config.colorMode & android::ResTable_config::MASK_WIDE_COLOR_GAMUT); EXPECT_EQ(SDK_O, config.sdkVersion); EXPECT_EQ(String8("widecg-v26"), config.toString()); EXPECT_TRUE(TestParse("nowidecg", &config)); EXPECT_EQ(android::ResTable_config::WIDE_COLOR_GAMUT_NO, - config.colorimetry & android::ResTable_config::MASK_WIDE_COLOR_GAMUT); + config.colorMode & android::ResTable_config::MASK_WIDE_COLOR_GAMUT); EXPECT_EQ(SDK_O, config.sdkVersion); EXPECT_EQ(String8("nowidecg-v26"), config.toString()); } @@ -118,13 +118,13 @@ TEST(AaptConfigTest, HdrQualifier) { ConfigDescription config; EXPECT_TRUE(TestParse("highdr", &config)); EXPECT_EQ(android::ResTable_config::HDR_YES, - config.colorimetry & android::ResTable_config::MASK_HDR); + config.colorMode & android::ResTable_config::MASK_HDR); EXPECT_EQ(SDK_O, config.sdkVersion); EXPECT_EQ(String8("highdr-v26"), config.toString()); EXPECT_TRUE(TestParse("lowdr", &config)); EXPECT_EQ(android::ResTable_config::HDR_NO, - config.colorimetry & android::ResTable_config::MASK_HDR); + config.colorMode & android::ResTable_config::MASK_HDR); EXPECT_EQ(SDK_O, config.sdkVersion); EXPECT_EQ(String8("lowdr-v26"), config.toString()); }
\ No newline at end of file diff --git a/tools/aapt2/ConfigDescription.cpp b/tools/aapt2/ConfigDescription.cpp index 5bea3ad1bbad..46098cbc3aa4 100644 --- a/tools/aapt2/ConfigDescription.cpp +++ b/tools/aapt2/ConfigDescription.cpp @@ -209,20 +209,20 @@ static bool parseScreenRound(const char* name, ResTable_config* out) { static bool parseWideColorGamut(const char* name, ResTable_config* out) { if (strcmp(name, kWildcardName) == 0) { if (out) - out->colorimetry = - (out->colorimetry & ~ResTable_config::MASK_WIDE_COLOR_GAMUT) | + out->colorMode = + (out->colorMode & ~ResTable_config::MASK_WIDE_COLOR_GAMUT) | ResTable_config::WIDE_COLOR_GAMUT_ANY; return true; } else if (strcmp(name, "widecg") == 0) { if (out) - out->colorimetry = - (out->colorimetry & ~ResTable_config::MASK_WIDE_COLOR_GAMUT) | + out->colorMode = + (out->colorMode & ~ResTable_config::MASK_WIDE_COLOR_GAMUT) | ResTable_config::WIDE_COLOR_GAMUT_YES; return true; } else if (strcmp(name, "nowidecg") == 0) { if (out) - out->colorimetry = - (out->colorimetry & ~ResTable_config::MASK_WIDE_COLOR_GAMUT) | + out->colorMode = + (out->colorMode & ~ResTable_config::MASK_WIDE_COLOR_GAMUT) | ResTable_config::WIDE_COLOR_GAMUT_NO; return true; } @@ -232,20 +232,20 @@ static bool parseWideColorGamut(const char* name, ResTable_config* out) { static bool parseHdr(const char* name, ResTable_config* out) { if (strcmp(name, kWildcardName) == 0) { if (out) - out->colorimetry = - (out->colorimetry & ~ResTable_config::MASK_HDR) | + out->colorMode = + (out->colorMode & ~ResTable_config::MASK_HDR) | ResTable_config::HDR_ANY; return true; } else if (strcmp(name, "highdr") == 0) { if (out) - out->colorimetry = - (out->colorimetry & ~ResTable_config::MASK_HDR) | + out->colorMode = + (out->colorMode & ~ResTable_config::MASK_HDR) | ResTable_config::HDR_YES; return true; } else if (strcmp(name, "lowdr") == 0) { if (out) - out->colorimetry = - (out->colorimetry & ~ResTable_config::MASK_HDR) | + out->colorMode = + (out->colorMode & ~ResTable_config::MASK_HDR) | ResTable_config::HDR_NO; return true; } @@ -840,8 +840,8 @@ void ConfigDescription::ApplyVersionForCompatibility( uint16_t min_sdk = 0; if ((config->uiMode & ResTable_config::MASK_UI_MODE_TYPE) == ResTable_config::UI_MODE_TYPE_VR_HEADSET || - config->colorimetry & ResTable_config::MASK_WIDE_COLOR_GAMUT || - config->colorimetry & ResTable_config::MASK_HDR) { + config->colorMode & ResTable_config::MASK_WIDE_COLOR_GAMUT || + config->colorMode & ResTable_config::MASK_HDR) { min_sdk = SDK_O; } else if (config->screenLayout2 & ResTable_config::MASK_SCREENROUND) { min_sdk = SDK_MARSHMALLOW; @@ -912,11 +912,11 @@ bool ConfigDescription::HasHigherPrecedenceThan( if ((screenLayout2 | o.screenLayout2) & MASK_SCREENROUND) { return !(o.screenLayout2 & MASK_SCREENROUND); } - if ((colorimetry | o.colorimetry) & MASK_HDR) { - return !(o.colorimetry & MASK_HDR); + if ((colorMode | o.colorMode) & MASK_HDR) { + return !(o.colorMode & MASK_HDR); } - if ((colorimetry | o.colorimetry) & MASK_WIDE_COLOR_GAMUT) { - return !(o.colorimetry & MASK_WIDE_COLOR_GAMUT); + if ((colorMode | o.colorMode) & MASK_WIDE_COLOR_GAMUT) { + return !(o.colorMode & MASK_WIDE_COLOR_GAMUT); } if (orientation || o.orientation) return (!o.orientation); if ((uiMode | o.uiMode) & MASK_UI_MODE_TYPE) { @@ -964,9 +964,9 @@ bool ConfigDescription::ConflictsWith(const ConfigDescription& o) const { !pred(uiMode & MASK_UI_MODE_NIGHT, o.uiMode & MASK_UI_MODE_NIGHT) || !pred(screenLayout2 & MASK_SCREENROUND, o.screenLayout2 & MASK_SCREENROUND) || - !pred(colorimetry & MASK_HDR, o.colorimetry & MASK_HDR) || - !pred(colorimetry & MASK_WIDE_COLOR_GAMUT, - o.colorimetry & MASK_WIDE_COLOR_GAMUT) || + !pred(colorMode & MASK_HDR, o.colorMode & MASK_HDR) || + !pred(colorMode & MASK_WIDE_COLOR_GAMUT, + o.colorMode & MASK_WIDE_COLOR_GAMUT) || !pred(orientation, o.orientation) || !pred(touchscreen, o.touchscreen) || !pred(inputFlags & MASK_KEYSHIDDEN, o.inputFlags & MASK_KEYSHIDDEN) || diff --git a/tools/aapt2/ConfigDescription_test.cpp b/tools/aapt2/ConfigDescription_test.cpp index b88838ae26f5..14a565624e01 100644 --- a/tools/aapt2/ConfigDescription_test.cpp +++ b/tools/aapt2/ConfigDescription_test.cpp @@ -106,13 +106,13 @@ TEST(ConfigDescriptionTest, TestWideColorGamutQualifier) { ConfigDescription config; EXPECT_TRUE(TestParse("widecg", &config)); EXPECT_EQ(android::ResTable_config::WIDE_COLOR_GAMUT_YES, - config.colorimetry & android::ResTable_config::MASK_WIDE_COLOR_GAMUT); + config.colorMode & android::ResTable_config::MASK_WIDE_COLOR_GAMUT); EXPECT_EQ(SDK_O, config.sdkVersion); EXPECT_EQ(std::string("widecg-v26"), config.toString().string()); EXPECT_TRUE(TestParse("nowidecg", &config)); EXPECT_EQ(android::ResTable_config::WIDE_COLOR_GAMUT_NO, - config.colorimetry & android::ResTable_config::MASK_WIDE_COLOR_GAMUT); + config.colorMode & android::ResTable_config::MASK_WIDE_COLOR_GAMUT); EXPECT_EQ(SDK_O, config.sdkVersion); EXPECT_EQ(std::string("nowidecg-v26"), config.toString().string()); } @@ -121,13 +121,13 @@ TEST(ConfigDescriptionTest, TestHdrQualifier) { ConfigDescription config; EXPECT_TRUE(TestParse("highdr", &config)); EXPECT_EQ(android::ResTable_config::HDR_YES, - config.colorimetry & android::ResTable_config::MASK_HDR); + config.colorMode & android::ResTable_config::MASK_HDR); EXPECT_EQ(SDK_O, config.sdkVersion); EXPECT_EQ(std::string("highdr-v26"), config.toString().string()); EXPECT_TRUE(TestParse("lowdr", &config)); EXPECT_EQ(android::ResTable_config::HDR_NO, - config.colorimetry & android::ResTable_config::MASK_HDR); + config.colorMode & android::ResTable_config::MASK_HDR); EXPECT_EQ(SDK_O, config.sdkVersion); EXPECT_EQ(std::string("lowdr-v26"), config.toString().string()); } |