From b39d59e070e184be179c19b5a9437774ca0f29f6 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Wed, 28 Jun 2023 23:24:38 +0200 Subject: [PATCH] Add new surface colors to color schemes --- .../CustomColorSchemeSettingsScreen.kt | 188 ++++++++++++++++++ .../CustomColorSchemeSettingsScreenVM.kt | 107 +++++----- .../mm20/launcher2/ui/theme/LauncherTheme.kt | 8 +- .../ui/theme/colorscheme/BlackAndWhite.kt | 18 +- .../launcher2/ui/theme/colorscheme/Custom.kt | 7 + .../launcher2/ui/theme/colorscheme/Default.kt | 100 +++++----- .../ui/theme/colorscheme/EasterEgg.kt | 98 ++++----- .../ui/theme/colorscheme/Wallpaper.kt | 7 + .../preferences/src/main/proto/settings.proto | 7 + .../src/main/java/palettes/CorePalette.java | 9 + .../src/main/java/scheme/Scheme.java | 4 +- 11 files changed, 387 insertions(+), 166 deletions(-) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/colorscheme/CustomColorSchemeSettingsScreen.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/colorscheme/CustomColorSchemeSettingsScreen.kt index 827a7af5..08ce58f1 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/colorscheme/CustomColorSchemeSettingsScreen.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/colorscheme/CustomColorSchemeSettingsScreen.kt @@ -362,6 +362,99 @@ fun CustomColorSchemeSettingsScreen() { } ) + ColorPreference( + title = "Surface Dim", + value = lightScheme?.let { Color(it.surfaceDim) }, + onValueChanged = { + if (it == null) return@ColorPreference + val colors = lightScheme ?: return@ColorPreference + viewModel.setLightScheme( + colors.toBuilder() + .setSurfaceDim(it.toArgb()) + .build() + ) + } + ) + ColorPreference( + title = "Surface Bright", + value = lightScheme?.let { Color(it.surfaceBright) }, + onValueChanged = { + if (it == null) return@ColorPreference + val colors = lightScheme ?: return@ColorPreference + viewModel.setLightScheme( + colors.toBuilder() + .setSurfaceBright(it.toArgb()) + .build() + ) + } + ) + + ColorPreference( + title = "Surface Container Lowest", + value = lightScheme?.let { Color(it.surfaceContainerLowest) }, + onValueChanged = { + if (it == null) return@ColorPreference + val colors = lightScheme ?: return@ColorPreference + viewModel.setLightScheme( + colors.toBuilder() + .setSurfaceContainerLowest(it.toArgb()) + .build() + ) + } + ) + ColorPreference( + title = "Surface Container Low", + value = lightScheme?.let { Color(it.surfaceContainerLow) }, + onValueChanged = { + if (it == null) return@ColorPreference + val colors = lightScheme ?: return@ColorPreference + viewModel.setLightScheme( + colors.toBuilder() + .setSurfaceContainerLow(it.toArgb()) + .build() + ) + } + ) + ColorPreference( + title = "Surface Container", + value = lightScheme?.let { Color(it.surfaceContainer) }, + onValueChanged = { + if (it == null) return@ColorPreference + val colors = lightScheme ?: return@ColorPreference + viewModel.setLightScheme( + colors.toBuilder() + .setSurfaceContainer(it.toArgb()) + .build() + ) + } + ) + ColorPreference( + title = "Surface Container High", + value = lightScheme?.let { Color(it.surfaceContainerHigh) }, + onValueChanged = { + if (it == null) return@ColorPreference + val colors = lightScheme ?: return@ColorPreference + viewModel.setLightScheme( + colors.toBuilder() + .setSurfaceContainerHigh(it.toArgb()) + .build() + ) + } + ) + ColorPreference( + title = "Surface Container Highest", + value = lightScheme?.let { Color(it.surfaceContainerHighest) }, + onValueChanged = { + if (it == null) return@ColorPreference + val colors = lightScheme ?: return@ColorPreference + viewModel.setLightScheme( + colors.toBuilder() + .setSurfaceContainerHighest(it.toArgb()) + .build() + ) + } + ) + ColorPreference( title = "Surface Tint", value = lightScheme?.let { Color(it.surfaceTint) }, @@ -739,6 +832,101 @@ fun CustomColorSchemeSettingsScreen() { ) } ) + + + ColorPreference( + title = "Surface Dim", + value = darkScheme?.let { Color(it.surfaceDim) }, + onValueChanged = { + if (it == null) return@ColorPreference + val colors = darkScheme ?: return@ColorPreference + viewModel.setDarkScheme( + colors.toBuilder() + .setSurfaceDim(it.toArgb()) + .build() + ) + } + ) + ColorPreference( + title = "Surface Bright", + value = darkScheme?.let { Color(it.surfaceBright) }, + onValueChanged = { + if (it == null) return@ColorPreference + val colors = darkScheme ?: return@ColorPreference + viewModel.setDarkScheme( + colors.toBuilder() + .setSurfaceBright(it.toArgb()) + .build() + ) + } + ) + + ColorPreference( + title = "Surface Container Lowest", + value = darkScheme?.let { Color(it.surfaceContainerLowest) }, + onValueChanged = { + if (it == null) return@ColorPreference + val colors = darkScheme ?: return@ColorPreference + viewModel.setDarkScheme( + colors.toBuilder() + .setSurfaceContainerLowest(it.toArgb()) + .build() + ) + } + ) + ColorPreference( + title = "Surface Container Low", + value = darkScheme?.let { Color(it.surfaceContainerLow) }, + onValueChanged = { + if (it == null) return@ColorPreference + val colors = darkScheme ?: return@ColorPreference + viewModel.setDarkScheme( + colors.toBuilder() + .setSurfaceContainerLow(it.toArgb()) + .build() + ) + } + ) + ColorPreference( + title = "Surface Container", + value = darkScheme?.let { Color(it.surfaceContainer) }, + onValueChanged = { + if (it == null) return@ColorPreference + val colors = darkScheme ?: return@ColorPreference + viewModel.setDarkScheme( + colors.toBuilder() + .setSurfaceContainer(it.toArgb()) + .build() + ) + } + ) + ColorPreference( + title = "Surface Container High", + value = darkScheme?.let { Color(it.surfaceContainerHigh) }, + onValueChanged = { + if (it == null) return@ColorPreference + val colors = darkScheme ?: return@ColorPreference + viewModel.setDarkScheme( + colors.toBuilder() + .setSurfaceContainerHigh(it.toArgb()) + .build() + ) + } + ) + ColorPreference( + title = "Surface Container Highest", + value = darkScheme?.let { Color(it.surfaceContainerHighest) }, + onValueChanged = { + if (it == null) return@ColorPreference + val colors = darkScheme ?: return@ColorPreference + viewModel.setDarkScheme( + colors.toBuilder() + .setSurfaceContainerHighest(it.toArgb()) + .build() + ) + } + ) + ColorPreference( title = "Surface Tint", value = darkScheme?.let { Color(it.surfaceTint) }, diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/colorscheme/CustomColorSchemeSettingsScreenVM.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/colorscheme/CustomColorSchemeSettingsScreenVM.kt index 3fa1d43a..142efcc1 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/settings/colorscheme/CustomColorSchemeSettingsScreenVM.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/settings/colorscheme/CustomColorSchemeSettingsScreenVM.kt @@ -11,6 +11,7 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import org.koin.core.component.KoinComponent import org.koin.core.component.inject +import palettes.CorePalette import palettes.TonalPalette import scheme.Scheme @@ -57,7 +58,7 @@ class CustomColorSchemeSettingsScreenVM : ViewModel(), KoinComponent { .setAccent2(scheme.secondary) .setAccent3(scheme.tertiary) .setNeutral1(scheme.surface) - .setNeutral2(scheme.surfaceVariant) + .setNeutral2(scheme.outline) .setError(scheme.error) .build() ) @@ -128,37 +129,8 @@ class CustomColorSchemeSettingsScreenVM : ViewModel(), KoinComponent { val n2 = TonalPalette.fromInt(baseColors.neutral2) val error = TonalPalette.fromInt(baseColors.error) - return CustomColors.Scheme.newBuilder() - .setPrimary(a1.tone(80)) - .setSurfaceTint(a1.tone(80)) - .setOnPrimary(a1.tone(20)) - .setPrimaryContainer(a1.tone(30)) - .setOnPrimaryContainer(a1.tone(90)) - .setSecondary(a2.tone(80)) - .setOnSecondary(a2.tone(20)) - .setSecondaryContainer(a2.tone(30)) - .setOnSecondaryContainer(a2.tone(90)) - .setTertiary(a3.tone(80)) - .setOnTertiary(a3.tone(20)) - .setTertiaryContainer(a3.tone(30)) - .setOnTertiaryContainer(a3.tone(90)) - .setError(error.tone(80)) - .setOnError(error.tone(20)) - .setErrorContainer(error.tone(30)) - .setOnErrorContainer(error.tone(80)) - .setBackground(n1.tone(10)) - .setOnBackground(n1.tone(90)) - .setSurface(n1.tone(10)) - .setOnSurface(n1.tone(90)) - .setSurfaceVariant(n2.tone(30)) - .setOnSurfaceVariant(n2.tone(80)) - .setOutline(n2.tone(60)) - .setOutlineVariant(n2.tone(30)) - .setInverseSurface(n1.tone(90)) - .setInverseOnSurface(n1.tone(20)) - .setInversePrimary(a1.tone(40)) - .setScrim(n1.tone(0)) - .build() + val scheme = Scheme.darkFromCorePalette(CorePalette(a1, a2, a3, n1, n2, error)) + return scheme.toSettingsColorsScheme() } private fun baseColorsToLightScheme(baseColors: CustomColors.BaseColors): CustomColors.Scheme { @@ -169,36 +141,49 @@ class CustomColorSchemeSettingsScreenVM : ViewModel(), KoinComponent { val n2 = TonalPalette.fromInt(baseColors.neutral2) val error = TonalPalette.fromInt(baseColors.error) + val scheme = Scheme.lightFromCorePalette(CorePalette(a1, a2, a3, n1, n2, error)) + return scheme.toSettingsColorsScheme() + } + + private fun Scheme.toSettingsColorsScheme(): CustomColors.Scheme { + val scheme = this return CustomColors.Scheme.newBuilder() - .setPrimary(a1.tone(40)) - .setSurfaceTint(a1.tone(40)) - .setOnPrimary(a1.tone(100)) - .setPrimaryContainer(a1.tone(90)) - .setOnPrimaryContainer(a1.tone(10)) - .setSecondary(a2.tone(40)) - .setOnSecondary(a2.tone(100)) - .setSecondaryContainer(a2.tone(90)) - .setOnSecondaryContainer(a2.tone(10)) - .setTertiary(a3.tone(40)) - .setOnTertiary(a3.tone(100)) - .setTertiaryContainer(a3.tone(90)) - .setOnTertiaryContainer(a3.tone(10)) - .setError(error.tone(40)) - .setOnError(error.tone(100)) - .setErrorContainer(error.tone(90)) - .setOnErrorContainer(error.tone(10)) - .setBackground(n1.tone(99)) - .setOnBackground(n1.tone(10)) - .setSurface(n1.tone(99)) - .setOnSurface(n1.tone(10)) - .setSurfaceVariant(n2.tone(90)) - .setOnSurfaceVariant(n2.tone(30)) - .setOutline(n2.tone(50)) - .setOutlineVariant(n2.tone(80)) - .setInverseSurface(n1.tone(20)) - .setInverseOnSurface(n1.tone(95)) - .setInversePrimary(a1.tone(80)) - .setScrim(n1.tone(0)) + .setPrimary(scheme.primary) + .setSurfaceTint(scheme.primary) + .setOnPrimary(scheme.onPrimary) + .setPrimaryContainer(scheme.primaryContainer) + .setOnPrimaryContainer(scheme.onPrimaryContainer) + .setSecondary(scheme.secondary) + .setOnSecondary(scheme.onSecondary) + .setSecondaryContainer(scheme.secondaryContainer) + .setOnSecondaryContainer(scheme.onSecondaryContainer) + .setTertiary(scheme.tertiary) + .setOnTertiary(scheme.onTertiary) + .setTertiaryContainer(scheme.tertiaryContainer) + .setOnTertiaryContainer(scheme.onTertiaryContainer) + .setError(scheme.error) + .setOnError(scheme.onError) + .setErrorContainer(scheme.errorContainer) + .setOnErrorContainer(scheme.onErrorContainer) + .setBackground(scheme.background) + .setOnBackground(scheme.onBackground) + .setSurface(scheme.surface) + .setOnSurface(scheme.onSurface) + .setSurfaceVariant(scheme.surfaceVariant) + .setOnSurfaceVariant(scheme.onSurfaceVariant) + .setOutline(scheme.outline) + .setOutlineVariant(scheme.outlineVariant) + .setInverseSurface(scheme.inverseSurface) + .setInverseOnSurface(scheme.inverseOnSurface) + .setInversePrimary(scheme.inversePrimary) + .setScrim(scheme.scrim) + .setSurfaceDim(scheme.surfaceDim) + .setSurfaceBright(scheme.surfaceBright) + .setSurfaceContainerLowest(scheme.surfaceContainerLowest) + .setSurfaceContainerLow(scheme.surfaceContainerLow) + .setSurfaceContainer(scheme.surfaceContainer) + .setSurfaceContainerHigh(scheme.surfaceContainerHigh) + .setSurfaceContainerHighest(scheme.surfaceContainerHighest) .build() } } \ No newline at end of file diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/theme/LauncherTheme.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/theme/LauncherTheme.kt index 72efd83a..457b94be 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/theme/LauncherTheme.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/theme/LauncherTheme.kt @@ -138,13 +138,9 @@ fun colorSchemeAsState( return remember(darkTheme) { mutableStateOf( if (darkTheme) { - dynamicDarkColorScheme(context).copy( - outlineVariant = Color(context.getColor(android.R.color.system_neutral2_700)) - ) + dynamicDarkColorScheme(context) } else { - dynamicLightColorScheme(context).copy( - outlineVariant = Color(context.getColor(android.R.color.system_neutral2_200)) - ) + dynamicLightColorScheme(context) } ) } diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/BlackAndWhite.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/BlackAndWhite.kt index 06d30a95..f284e0aa 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/BlackAndWhite.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/BlackAndWhite.kt @@ -34,7 +34,14 @@ val LightBlackAndWhiteColorScheme = lightColorScheme( outline = Color.Black, surfaceTint = Color.White, outlineVariant = Color.Black, - scrim = Color.Black + scrim = Color.Black, + surfaceDim = Color.White, + surfaceBright = Color.White, + surfaceContainer = Color.White, + surfaceContainerHigh = Color.White, + surfaceContainerHighest = Color.White, + surfaceContainerLow = Color.White, + surfaceContainerLowest = Color.White, ) val DarkBlackAndWhiteColorScheme = darkColorScheme( primary = Color.White, @@ -65,5 +72,12 @@ val DarkBlackAndWhiteColorScheme = darkColorScheme( outline = Color.White, surfaceTint = Color.White, outlineVariant = Color.White, - scrim = Color.White + scrim = Color.White, + surfaceDim = Color.Black, + surfaceBright = Color.Black, + surfaceContainer = Color.Black, + surfaceContainerHigh = Color.Black, + surfaceContainerHighest = Color.Black, + surfaceContainerLow = Color.Black, + surfaceContainerLowest = Color.Black, ) \ No newline at end of file diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/Custom.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/Custom.kt index ee4477c3..1b3b00bc 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/Custom.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/Custom.kt @@ -35,5 +35,12 @@ fun CustomColorScheme(colors: Settings.AppearanceSettings.CustomColors.Scheme) : onErrorContainer = Color(colors.onErrorContainer), outlineVariant = Color(colors.outlineVariant), scrim = Color(colors.scrim), + surfaceBright = Color(colors.surfaceBright), + surfaceDim = Color(colors.surfaceDim), + surfaceContainer = Color(colors.surfaceContainer), + surfaceContainerHigh = Color(colors.surfaceContainerHigh), + surfaceContainerHighest = Color(colors.surfaceContainerHighest), + surfaceContainerLow = Color(colors.surfaceContainerLow), + surfaceContainerLowest = Color(colors.surfaceContainerLowest), ) } \ No newline at end of file diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/Default.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/Default.kt index c719431d..cc8b5e96 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/Default.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/Default.kt @@ -5,59 +5,63 @@ import androidx.compose.material3.lightColorScheme import androidx.compose.ui.graphics.Color val LightDefaultColorScheme = lightColorScheme( - primary = Color(0xFF3C6089), + primary = Color(0xFF3D608A), onPrimary = Color(0xFFFFFFFF), - primaryContainer = Color(0xFFD1E4FF), - onPrimaryContainer = Color(0xFF101C2B), - inversePrimary = Color(0xFFA6C9F8), - secondary = Color(0xFF41617E), + primaryContainer = Color(0xFFD2E4FF), + onPrimaryContainer = Color(0xFF001C37), + inversePrimary = Color(0xFFA5C9F8), + secondary = Color(0xFF535F70), onSecondary = Color(0xFFFFFFFF), - secondaryContainer = Color(0xFFCCE5FF), - onSecondaryContainer = Color(0xFF001D33), - tertiary = Color(0xFF2C6674), + secondaryContainer = Color(0xFFD7E3F8), + onSecondaryContainer = Color(0xFF101C2B), + tertiary = Color(0xFF6B5778), onTertiary = Color(0xFFFFFFFF), - tertiaryContainer = Color(0xFFB2EBFC), - onTertiaryContainer = Color(0xFF001F26), - background = Color(0xFFFDFCFF), - onBackground = Color(0xFF161C27), - surface = Color(0xFFFDFCFF), - onSurface = Color(0xFF161C27), - surfaceVariant = Color(0xFFD8E2FA), - onSurfaceVariant = Color(0xFF3D475A), - inverseSurface = Color(0xFF2B313C), - inverseOnSurface = Color(0xFFEBF0FF), - error = Color(0xFF98434C), + tertiaryContainer = Color(0xFFF3DAFF), + onTertiaryContainer = Color(0xFF251431), + surface = Color(0xFFFAF9FC), + onSurface = Color(0xFF1A1C1E), + onSurfaceVariant = Color(0xFF43474E), + inverseSurface = Color(0xFF2F3033), + inverseOnSurface = Color(0xFFF1F0F3), + error = Color(0xFFBA1A1A), onError = Color(0xFFFFFFFF), - errorContainer = Color(0xFFFFDADD), - onErrorContainer = Color(0xFF40000E), - outline = Color(0xFF6D778C), + errorContainer = Color(0xFFFFDAD5), + onErrorContainer = Color(0xFF410002), + outline = Color(0xFF73777F), + outlineVariant = Color(0xFFC3C6CF), + scrim = Color(0xFF000000), + background = Color(0xFFFDFCFF), + onBackground = Color(0xFF1A1C1E), + surfaceVariant = Color(0xFFDFE2EB), ) val DarkDefaultColorScheme = darkColorScheme( - primary = Color(0xFFA6C9F8), - onPrimary = Color(0xFF033259), - primaryContainer = Color(0xFF234870), - onPrimaryContainer = Color(0xFFD1E4FF), - inversePrimary = Color(0xFF3C6089), - secondary = Color(0xFFA9CAEC), - onSecondary = Color(0xFF0E334E), - secondaryContainer = Color(0xFF284965), - onSecondaryContainer = Color(0xFFCCE5FF), - tertiary = Color(0xFF97CFDF), - onTertiary = Color(0xFF003641), - tertiaryContainer = Color(0xFF094E5C), - onTertiaryContainer = Color(0xFFB2EBFC), - background = Color(0xFF161C27), - onBackground = Color(0xFFDDE2F2), - surface = Color(0xFF161C27), - onSurface = Color(0xFFDDE2F2), - surfaceVariant = Color(0xFF3D475A), - onSurfaceVariant = Color(0xFFBDC7DF), - inverseSurface = Color(0xFFDDE2F2), - inverseOnSurface = Color(0xFF2B313C), - error = Color(0xFFFFB3B9), - onError = Color(0xFF5D1521), - errorContainer = Color(0xFF7A2C36), - onErrorContainer = Color(0xFFFFB3B9), - outline = Color(0xFF8791A7), + primary = Color(0xFFA5C9F8), + onPrimary = Color(0xFF023258), + primaryContainer = Color(0xFF224970), + onPrimaryContainer = Color(0xFFD2E4FF), + inversePrimary = Color(0xFF3D608A), + secondary = Color(0xFFBBC7DB), + onSecondary = Color(0xFF253141), + secondaryContainer = Color(0xFF3C4858), + onSecondaryContainer = Color(0xFFD7E3F8), + tertiary = Color(0xFFD6BEE4), + onTertiary = Color(0xFF3B2947), + tertiaryContainer = Color(0xFF523F5F), + onTertiaryContainer = Color(0xFFF3DAFF), + surface = Color(0xFF1A1C1E), + onSurface = Color(0xFFE3E2E5), + onSurfaceVariant = Color(0xFFC3C6CF), + inverseSurface = Color(0xFFE3E2E5), + inverseOnSurface = Color(0xFF2F3033), + error = Color(0xFFFFB4AB), + onError = Color(0xFF690004), + errorContainer = Color(0xFF930009), + onErrorContainer = Color(0xFFFFB4AB), + outline = Color(0xFF8D9199), + outlineVariant = Color(0xFF43474E), + scrim = Color(0xFF000000), + background = Color(0xFF1A1C1E), + onBackground = Color(0xFFE3E2E5), + surfaceVariant = Color(0xFF43474E), ) \ No newline at end of file diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/EasterEgg.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/EasterEgg.kt index 9d421356..66e582d0 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/EasterEgg.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/EasterEgg.kt @@ -5,59 +5,63 @@ import androidx.compose.material3.lightColorScheme import androidx.compose.ui.graphics.Color val LightEasterEggColorScheme = lightColorScheme( - primary = Color(0xFFB30080), + primary = Color(0xFFB40180), onPrimary = Color(0xFFFFFFFF), - primaryContainer = Color(0xFFFFD8EB), - onPrimaryContainer = Color(0xFF3C002A), - inversePrimary = Color(0xFFFFAEDA), - secondary = Color(0xFF9E00C6), + primaryContainer = Color(0xFFFFD8E9), + onPrimaryContainer = Color(0xFF3C0029), + inversePrimary = Color(0xFFFFAFD7), + secondary = Color(0xFF725763), onSecondary = Color(0xFFFFFFFF), - secondaryContainer = Color(0xFFFED6FF), - onSecondaryContainer = Color(0xFF340044), - tertiary = Color(0xFF8F4E00), + secondaryContainer = Color(0xFFFDD9E7), + onSecondaryContainer = Color(0xFF29151F), + tertiary = Color(0xFF7F543B), onTertiary = Color(0xFFFFFFFF), - tertiaryContainer = Color(0xFFFFDCBE), - onTertiaryContainer = Color(0xFF2E1500), - background = Color(0xFFFCFCF6), - onBackground = Color(0xFF1A1C19), - surface = Color(0xFFFCFCF6), - onSurface = Color(0xFF1A1C19), - surfaceVariant = Color(0xFFFFD6F5), - onSurfaceVariant = Color(0xFF6F2E67), - inverseSurface = Color(0xFF2F312D), - inverseOnSurface = Color(0xFFF1F1EB), - error = Color(0xFFB4271F), + tertiaryContainer = Color(0xFFFFDBC9), + onTertiaryContainer = Color(0xFF311302), + surface = Color(0xFFFCF8FC), + onSurface = Color(0xFF1C1B1E), + onSurfaceVariant = Color(0xFF4F4448), + inverseSurface = Color(0xFF313033), + inverseOnSurface = Color(0xFFF3EFF3), + error = Color(0xFFBA1A1A), onError = Color(0xFFFFFFFF), - errorContainer = Color(0xFFFFDAD3), - onErrorContainer = Color(0xFF410001), - outline = Color(0xFFA55E9A), + errorContainer = Color(0xFFFFDAD5), + onErrorContainer = Color(0xFF410002), + outline = Color(0xFF817379), + outlineVariant = Color(0xFFD3C2C8), + scrim = Color(0xFF000000), + background = Color(0xFFFFFBFF), + onBackground = Color(0xFF1C1B1E), + surfaceVariant = Color(0xFFF0DEE4), ) val DarkEasterEggColorScheme = darkColorScheme( - primary = Color(0xFFFFAEDA), + primary = Color(0xFFFFAFD7), onPrimary = Color(0xFF620044), - primaryContainer = Color(0xFF890061), - onPrimaryContainer = Color(0xFFFFD8EB), - inversePrimary = Color(0xFFB30080), - secondary = Color(0xFFF5ADFF), - onSecondary = Color(0xFF55006C), - secondaryContainer = Color(0xFF780097), - onSecondaryContainer = Color(0xFFFED6FF), - tertiary = Color(0xFFFFB773), - onTertiary = Color(0xFF4C2700), - tertiaryContainer = Color(0xFF6D3A00), - onTertiaryContainer = Color(0xFFFFDCBE), - background = Color(0xFF1A1C19), - onBackground = Color(0xFFE2E3DC), - surface = Color(0xFF1A1C19), - onSurface = Color(0xFFE2E3DC), - surfaceVariant = Color(0xFF6F2E67), - onSurfaceVariant = Color(0xFFFEACEE), - inverseSurface = Color(0xFFE2E3DC), - inverseOnSurface = Color(0xFF2F312D), - error = Color(0xFFFFB4A8), - onError = Color(0xFF690001), - errorContainer = Color(0xFF910809), - onErrorContainer = Color(0xFFFFB4A8), - outline = Color(0xFFC277B5), + primaryContainer = Color(0xFF8A0061), + onPrimaryContainer = Color(0xFFFFD8E9), + inversePrimary = Color(0xFFB40180), + secondary = Color(0xFFE0BDCB), + onSecondary = Color(0xFF402A35), + secondaryContainer = Color(0xFF59404B), + onSecondaryContainer = Color(0xFFFDD9E7), + tertiary = Color(0xFFF3BA9B), + onTertiary = Color(0xFF4A2812), + tertiaryContainer = Color(0xFF643D26), + onTertiaryContainer = Color(0xFFFFDBC9), + surface = Color(0xFF1C1B1E), + onSurface = Color(0xFFE5E1E5), + onSurfaceVariant = Color(0xFFD3C2C8), + inverseSurface = Color(0xFFE5E1E5), + inverseOnSurface = Color(0xFF313033), + error = Color(0xFFFFB4AB), + onError = Color(0xFF690004), + errorContainer = Color(0xFF930009), + onErrorContainer = Color(0xFFFFB4AB), + outline = Color(0xFF9C8D92), + outlineVariant = Color(0xFF4F4448), + scrim = Color(0xFF000000), + background = Color(0xFF1C1B1E), + onBackground = Color(0xFFE5E1E5), + surfaceVariant = Color(0xFF4F4448), ) \ No newline at end of file diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/Wallpaper.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/Wallpaper.kt index 906020d7..2943537c 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/Wallpaper.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/theme/colorscheme/Wallpaper.kt @@ -45,5 +45,12 @@ fun MaterialYouCompatScheme(wallpaperColors: WallpaperColors, darkTheme: Boolean onErrorContainer = Color(scheme.onErrorContainer), scrim = Color(scheme.scrim), outlineVariant = Color(scheme.outlineVariant), + surfaceBright = Color(scheme.surfaceBright), + surfaceContainer = Color(scheme.surfaceContainer), + surfaceContainerHigh = Color(scheme.surfaceContainerHigh), + surfaceContainerHighest = Color(scheme.surfaceContainerHighest), + surfaceContainerLow = Color(scheme.surfaceContainerLow), + surfaceContainerLowest = Color(scheme.surfaceContainerLowest), + surfaceDim = Color(scheme.surfaceDim), ) } \ No newline at end of file diff --git a/core/preferences/src/main/proto/settings.proto b/core/preferences/src/main/proto/settings.proto index 2e2b84d0..8547184d 100644 --- a/core/preferences/src/main/proto/settings.proto +++ b/core/preferences/src/main/proto/settings.proto @@ -61,6 +61,13 @@ message Settings { uint32 outline_variant = 27; uint32 scrim = 28; uint32 surface_tint = 29; + uint32 surface_dim = 30; + uint32 surface_bright = 31; + uint32 surface_container_lowest = 32; + uint32 surface_container_low = 33; + uint32 surface_container = 34; + uint32 surface_container_high = 35; + uint32 surface_container_highest = 36; } Scheme light_scheme = 3; Scheme dark_scheme = 4; diff --git a/libs/material-color-utilities/src/main/java/palettes/CorePalette.java b/libs/material-color-utilities/src/main/java/palettes/CorePalette.java index 9a47ee79..6095ae3b 100644 --- a/libs/material-color-utilities/src/main/java/palettes/CorePalette.java +++ b/libs/material-color-utilities/src/main/java/palettes/CorePalette.java @@ -51,6 +51,15 @@ public final class CorePalette { return new CorePalette(argb, true); } + public CorePalette(TonalPalette a1, TonalPalette a2, TonalPalette a3, TonalPalette n1, TonalPalette n2, TonalPalette error) { + this.a1 = a1; + this.a2 = a2; + this.a3 = a3; + this.n1 = n1; + this.n2 = n2; + this.error = error; + } + private CorePalette(int argb, boolean isContent) { Hct hct = Hct.fromInt(argb); double hue = hct.getHue(); diff --git a/libs/material-color-utilities/src/main/java/scheme/Scheme.java b/libs/material-color-utilities/src/main/java/scheme/Scheme.java index de8e9c94..ac290997 100644 --- a/libs/material-color-utilities/src/main/java/scheme/Scheme.java +++ b/libs/material-color-utilities/src/main/java/scheme/Scheme.java @@ -157,7 +157,7 @@ public class Scheme { return darkFromCorePalette(CorePalette.contentOf(argb)); } - private static Scheme lightFromCorePalette(CorePalette core) { + public static Scheme lightFromCorePalette(CorePalette core) { return new Scheme() .withPrimary(core.a1.tone(40)) .withOnPrimary(core.a1.tone(100)) @@ -197,7 +197,7 @@ public class Scheme { .withSurfaceContainerHighest(core.n1.tone(90)); } - private static Scheme darkFromCorePalette(CorePalette core) { + public static Scheme darkFromCorePalette(CorePalette core) { return new Scheme() .withPrimary(core.a1.tone(80)) .withOnPrimary(core.a1.tone(20))