mirror of
https://github.com/austinried/subtracks.git
synced 2026-11-11 07:29:14 +01:00
fade the hero into a darkened primary instead of black
This commit is contained in:
@@ -171,7 +171,7 @@ fun AlbumDetailScreen(
|
|||||||
val mid = scrollPx + barHeightPx / 2f
|
val mid = scrollPx + barHeightPx / 2f
|
||||||
lerp(
|
lerp(
|
||||||
it.gradientColorAt(mid / gradientHeightPx),
|
it.gradientColorAt(mid / gradientHeightPx),
|
||||||
Color.Black,
|
it.darkPrimary,
|
||||||
heroDarkenAt(mid, with(density) { maxHeight.toPx() }),
|
heroDarkenAt(mid, with(density) { maxHeight.toPx() }),
|
||||||
)
|
)
|
||||||
} ?: Color.Black
|
} ?: Color.Black
|
||||||
|
|||||||
@@ -36,16 +36,17 @@ private const val PERIOD_SCREENS = 2f
|
|||||||
private const val BLOB_ZONE = 0.62f
|
private const val BLOB_ZONE = 0.62f
|
||||||
private const val BLOB_COUNT = 4
|
private const val BLOB_COUNT = 4
|
||||||
private const val ACCENT_MAX_LUMINANCE = 0.34f
|
private const val ACCENT_MAX_LUMINANCE = 0.34f
|
||||||
private const val HERO_DARKEN_MAX = 0.85f
|
private const val HERO_DARKEN_MAX = 1.0f
|
||||||
private const val DARKEN_START_SCREENS = 0.45f
|
private const val DARKEN_START_SCREENS = 0.5f
|
||||||
private const val DARKEN_END_SCREENS = 1.0f
|
private const val DARKEN_END_SCREENS = 1.5f
|
||||||
private const val DARKEN_KNEE = 0.15f
|
private const val DARKEN_KNEE = 0.2f
|
||||||
|
|
||||||
data class ArtworkColors(
|
data class ArtworkColors(
|
||||||
val scheme: ColorScheme,
|
val scheme: ColorScheme,
|
||||||
val gradientHigh: Color,
|
val gradientHigh: Color,
|
||||||
val gradientLow: Color,
|
val gradientLow: Color,
|
||||||
val accents: List<Color>,
|
val accents: List<Color>,
|
||||||
|
val darkPrimary: Color,
|
||||||
val blobSeed: Int,
|
val blobSeed: Int,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -117,6 +118,7 @@ fun artworkColorsFromSeeds(
|
|||||||
tone(hue, s, 0.72f).withMaxLuminance(ACCENT_MAX_LUMINANCE),
|
tone(hue, s, 0.72f).withMaxLuminance(ACCENT_MAX_LUMINANCE),
|
||||||
secondary.withMaxLuminance(ACCENT_MAX_LUMINANCE),
|
secondary.withMaxLuminance(ACCENT_MAX_LUMINANCE),
|
||||||
),
|
),
|
||||||
|
darkPrimary = tone(hue, s * 0.8f, 0.10f),
|
||||||
blobSeed = primarySeed,
|
blobSeed = primarySeed,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -246,6 +248,7 @@ fun HeroGradient(
|
|||||||
val high = colors?.gradientHigh ?: MaterialTheme.colorScheme.surfaceContainerHigh
|
val high = colors?.gradientHigh ?: MaterialTheme.colorScheme.surfaceContainerHigh
|
||||||
val low = colors?.gradientLow ?: MaterialTheme.colorScheme.background
|
val low = colors?.gradientLow ?: MaterialTheme.colorScheme.background
|
||||||
val accents = colors?.accents.orEmpty()
|
val accents = colors?.accents.orEmpty()
|
||||||
|
val dark = colors?.darkPrimary ?: MaterialTheme.colorScheme.background
|
||||||
val seed = colors?.blobSeed ?: 0
|
val seed = colors?.blobSeed ?: 0
|
||||||
|
|
||||||
Canvas(modifier) {
|
Canvas(modifier) {
|
||||||
@@ -292,8 +295,8 @@ fun HeroGradient(
|
|||||||
colorStops =
|
colorStops =
|
||||||
arrayOf(
|
arrayOf(
|
||||||
0f to Color.Transparent,
|
0f to Color.Transparent,
|
||||||
DARKEN_KNEE to Color.Black.copy(alpha = HERO_DARKEN_MAX * 0.5f),
|
DARKEN_KNEE to dark.copy(alpha = HERO_DARKEN_MAX * 0.5f),
|
||||||
1f to Color.Black.copy(alpha = HERO_DARKEN_MAX),
|
1f to dark.copy(alpha = HERO_DARKEN_MAX),
|
||||||
),
|
),
|
||||||
startY = darkenStart,
|
startY = darkenStart,
|
||||||
endY = darkenEnd,
|
endY = darkenEnd,
|
||||||
|
|||||||
Reference in New Issue
Block a user