WallpaperColorScheme: avoid using brown as a neutral color

It just looks bad
This commit is contained in:
MM20 2021-09-27 23:44:39 +02:00
parent fa62e18a4d
commit 1dd1060254
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -1,15 +1,50 @@
package de.mm20.launcher2.ui.theme.colors
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.toArgb
import androidx.core.graphics.ColorUtils
import de.mm20.launcher2.ui.theme.WallpaperColors
class WallpaperColorScheme(
val wallpaperColors: WallpaperColors
wallpaperColors: WallpaperColors
) : ColorScheme() {
override val neutral1 = colorSwatch(wallpaperColors.primary)
override val neutral2 = colorSwatch(wallpaperColors.primary)
override val accent1 = colorSwatch(
wallpaperColors.tertiary ?: wallpaperColors.secondary ?: wallpaperColors.primary
)
override val accent2 = colorSwatch(wallpaperColors.secondary ?: wallpaperColors.primary)
override val accent3 = colorSwatch(wallpaperColors.primary)
override val neutral1: ColorSwatch
override val neutral2: ColorSwatch
override val accent1: ColorSwatch
override val accent2: ColorSwatch
override val accent3: ColorSwatch
init {
val primary = wallpaperColors.primary
val secondary = wallpaperColors.secondary
val tertiary = wallpaperColors.tertiary
val neutral = primary.takeIf { !isBrown(it) }
?: secondary?.takeIf { !isBrown(it) }
?: tertiary?.takeIf { isBrown(it) }
?: primary
val acc1: Color = tertiary?.takeIf { it != neutral }
?: primary.takeIf { it != neutral }
?: secondary?.takeIf { it != neutral }
?: primary
val acc2: Color = secondary?.takeIf { it != neutral }
?: primary.takeIf { it != neutral }
?: tertiary?.takeIf { it != neutral }
?: primary
neutral1 = colorSwatch(neutral)
neutral2 = neutral1
accent1 = colorSwatch(acc1)
accent2 = colorSwatch(acc2)
accent3 = neutral1
}
private fun isBrown(color: Color): Boolean {
val hsl = floatArrayOf(0f, 0f, 0f)
ColorUtils.colorToHSL(color.toArgb(), hsl)
return hsl[0] in 0.0..50.0
}
}