From 323060e996d751407390f302868da1c4d0e21825 Mon Sep 17 00:00:00 2001 From: James O'Leary Date: Thu, 23 Sep 2021 13:29:51 -0400 Subject: [PATCH] [CP] Adjust chroma/lstar filters for seed colors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is a set of wallpapers, namely some Landscape wallpapers, that don’t have any colors extracted from them. The wallpaper visually has some color to it, but, the chroma of those colors is low enough that they get filtered out by the low chroma filter. Lower the chroma filter from 15 to 5, and eliminate the tone filter (previously, L >= 10). Scoring compensates for this by prioritizing chromatic colors, thus ensuring these low-chroma options are only used if there’s no better options. Bug: b/200675148 Test: Push landscape wallpapers #912, #914, and #924 from Monet Studio to device. Verify color choices reflect wallpaper and aren't just fallback colors. Change-Id: I080e6cb51978638462a8b0ab41340aa11d495c93 --- .../com/android/systemui/monet/ColorScheme.kt | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/SystemUI/monet/src/com/android/systemui/monet/ColorScheme.kt b/packages/SystemUI/monet/src/com/android/systemui/monet/ColorScheme.kt index a5e5a8781a0e5..e026012f9de8b 100644 --- a/packages/SystemUI/monet/src/com/android/systemui/monet/ColorScheme.kt +++ b/packages/SystemUI/monet/src/com/android/systemui/monet/ColorScheme.kt @@ -37,8 +37,7 @@ const val NEUTRAL2_CHROMA = 8.0f const val GOOGLE_BLUE = 0xFF1b6ef3.toInt() -const val MIN_CHROMA = 15 -const val MIN_LSTAR = 10 +const val MIN_CHROMA = 5 public class ColorScheme(@ColorInt seed: Int, val darkTheme: Boolean) { @@ -75,7 +74,14 @@ public class ColorScheme(@ColorInt seed: Int, val darkTheme: Boolean) { get() = ColorUtils.setAlphaComponent(if (darkTheme) accent1[2] else accent1[6], 0xFF) init { - val seedArgb = if (seed == Color.TRANSPARENT) GOOGLE_BLUE else seed + val proposedSeedCam = Cam.fromInt(seed) + val seedArgb = if (seed == Color.TRANSPARENT) { + GOOGLE_BLUE + } else if (proposedSeedCam.chroma < 5) { + GOOGLE_BLUE + } else { + seed + } val camSeed = Cam.fromInt(seedArgb) val hue = camSeed.hue val chroma = camSeed.chroma.coerceAtLeast(ACCENT1_CHROMA) @@ -129,9 +135,7 @@ public class ColorScheme(@ColorInt seed: Int, val darkTheme: Boolean) { val distinctColors = wallpaperColors.mainColors.map { it.toArgb() }.distinct().filter { - val cam = Cam.fromInt(it) - val lstar = lstarFromInt(it) - cam.chroma >= MIN_CHROMA && lstar >= MIN_LSTAR + Cam.fromInt(it).chroma >= MIN_CHROMA }.toList() if (distinctColors.isEmpty()) { @@ -164,7 +168,7 @@ public class ColorScheme(@ColorInt seed: Int, val darkTheme: Boolean) { val cam = it.value val lstar = lstarFromInt(it.key) val proportion = intToHueProportion[it.key]!! - cam.chroma >= MIN_CHROMA && lstar >= MIN_LSTAR && + cam.chroma >= MIN_CHROMA && (totalPopulationMeaningless || proportion > 0.01) } // Sort the colors by score, from high to low.