diff --git a/app/src/main/kotlin/com/subtracks/ui/library/AlbumDetailScreen.kt b/app/src/main/kotlin/com/subtracks/ui/library/AlbumDetailScreen.kt index 3e7e0352..4b4d19a5 100644 --- a/app/src/main/kotlin/com/subtracks/ui/library/AlbumDetailScreen.kt +++ b/app/src/main/kotlin/com/subtracks/ui/library/AlbumDetailScreen.kt @@ -80,7 +80,6 @@ import com.subtracks.ui.theme.ArtworkColors import com.subtracks.ui.theme.ArtworkTheme import com.subtracks.ui.theme.HeroGradient import com.subtracks.ui.theme.gradientColorAt -import com.subtracks.ui.theme.heroDarken import com.subtracks.ui.theme.rememberArtworkColors import org.koin.compose.koinInject import org.koin.compose.viewmodel.koinViewModel diff --git a/app/src/main/kotlin/com/subtracks/ui/theme/ArtworkTheme.kt b/app/src/main/kotlin/com/subtracks/ui/theme/ArtworkTheme.kt index 5b9f44d6..fef27bcf 100644 --- a/app/src/main/kotlin/com/subtracks/ui/theme/ArtworkTheme.kt +++ b/app/src/main/kotlin/com/subtracks/ui/theme/ArtworkTheme.kt @@ -38,8 +38,8 @@ private const val BLOB_COUNT = 4 private const val ACCENT_MAX_LUMINANCE = 0.34f private const val HERO_DARKEN_MAX = 0.8f private const val HERO_DARKEN_SCREENS = 1.5f -private const val BASE_BOTTOM_DARKEN = 0.45f -private const val POSITION_FADE_START = 0.30f +private const val BASE_BOTTOM_DARKEN = 0.35f +private const val POSITION_FADE_START = 0.66f data class ArtworkColors( val scheme: ColorScheme, @@ -284,6 +284,8 @@ fun HeroGradient( } } } + val progress = (scroll / (size.height * HERO_DARKEN_SCREENS)).coerceIn(0f, 1f) + val bottomAlpha = BASE_BOTTOM_DARKEN + (HERO_DARKEN_MAX - BASE_BOTTOM_DARKEN) * progress drawRect( brush = Brush.verticalGradient( @@ -291,21 +293,13 @@ fun HeroGradient( arrayOf( 0f to Color.Transparent, POSITION_FADE_START to Color.Transparent, - 1f to - Color.Black.copy( - alpha = (BASE_BOTTOM_DARKEN + heroDarken(scroll, size.height)).coerceAtMost(HERO_DARKEN_MAX), - ), + 1f to Color.Black.copy(alpha = bottomAlpha), ), ), ) } } -fun heroDarken( - scrollPx: Float, - screenHeightPx: Float, -): Float = (scrollPx / (screenHeightPx * HERO_DARKEN_SCREENS)).coerceIn(0f, 1f) * HERO_DARKEN_MAX - private fun Color.toHsl(): Triple { val max = maxOf(red, green, blue) val min = minOf(red, green, blue)