diff --git a/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidBottomTab.kt b/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidBottomTab.kt index 417adcd..254ccf3 100644 --- a/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidBottomTab.kt +++ b/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidBottomTab.kt @@ -28,7 +28,7 @@ fun RowScope.LiquidBottomTab( val scale = LocalLiquidBottomTabScale.current Column( modifier - .clip(Capsule) + .clip(Capsule()) .clickable( interactionSource = null, indication = null, diff --git a/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidBottomTabs.kt b/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidBottomTabs.kt index 136d5cf..2106772 100644 --- a/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidBottomTabs.kt +++ b/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidBottomTabs.kt @@ -165,7 +165,7 @@ fun LiquidBottomTabs( } .drawBackdrop( backdrop = backdrop, - shape = { Capsule }, + shape = { Capsule() }, effects = { vibrancy() blur(8f.dp.toPx()) @@ -202,7 +202,7 @@ fun LiquidBottomTabs( } .drawBackdrop( backdrop = backdrop, - shape = { Capsule }, + shape = { Capsule() }, effects = { val progress = dampedDragAnimation.pressProgress vibrancy() @@ -240,7 +240,7 @@ fun LiquidBottomTabs( .then(dampedDragAnimation.modifier) .drawBackdrop( backdrop = rememberCombinedBackdrop(backdrop, tabsBackdrop), - shape = { Capsule }, + shape = { Capsule() }, effects = { val progress = dampedDragAnimation.pressProgress lens( diff --git a/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidButton.kt b/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidButton.kt index 64a6f4c..47b8409 100644 --- a/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidButton.kt +++ b/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidButton.kt @@ -54,7 +54,7 @@ fun LiquidButton( modifier .drawBackdrop( backdrop = backdrop, - shape = { Capsule }, + shape = { Capsule() }, effects = { vibrancy() blur(2f.dp.toPx()) diff --git a/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidSlider.kt b/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidSlider.kt index cc32461..95e7f9d 100644 --- a/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidSlider.kt +++ b/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidSlider.kt @@ -111,7 +111,7 @@ fun LiquidSlider( Box(Modifier.layerBackdrop(trackBackdrop)) { Box( Modifier - .clip(Capsule) + .clip(Capsule()) .background(trackColor) .pointerInput(animationScope) { detectTapGestures { position -> @@ -130,7 +130,7 @@ fun LiquidSlider( Box( Modifier - .clip(Capsule) + .clip(Capsule()) .background(accentColor) .height(6f.dp) .layout { measurable, constraints -> @@ -163,7 +163,7 @@ fun LiquidSlider( } } ), - shape = { Capsule }, + shape = { Capsule() }, effects = { val progress = dampedDragAnimation.pressProgress blur(8f.dp.toPx() * (1f - progress)) diff --git a/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidToggle.kt b/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidToggle.kt index 68a0f30..dcc6531 100644 --- a/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidToggle.kt +++ b/androidApp/src/main/java/com/kyant/backdrop/catalog/components/LiquidToggle.kt @@ -121,7 +121,7 @@ fun LiquidToggle( Box( Modifier .layerBackdrop(trackBackdrop) - .clip(Capsule) + .clip(Capsule()) .drawBehind { val fraction = dampedDragAnimation.value drawRect(lerp(trackColor, accentColor, fraction)) @@ -154,7 +154,7 @@ fun LiquidToggle( } } ), - shape = { Capsule }, + shape = { Capsule() }, effects = { val progress = dampedDragAnimation.pressProgress blur(8f.dp.toPx() * (1f - progress)) diff --git a/androidApp/src/main/java/com/kyant/backdrop/catalog/destinations/ControlCenterContent.kt b/androidApp/src/main/java/com/kyant/backdrop/catalog/destinations/ControlCenterContent.kt index 7046368..c56d305 100644 --- a/androidApp/src/main/java/com/kyant/backdrop/catalog/destinations/ControlCenterContent.kt +++ b/androidApp/src/main/java/com/kyant/backdrop/catalog/destinations/ControlCenterContent.kt @@ -70,7 +70,7 @@ fun ControlCenterContent() { val itemShape = RoundedRectangle(itemSize / 2f) val innerItemSize = 56f.dp - val innerItemShape = Capsule + val innerItemShape = Capsule() val innerItemIconScale = 0.8f val inactiveItemColor = Color.White.copy(0.2f) diff --git a/androidApp/src/main/java/com/kyant/backdrop/catalog/destinations/DialogContent.kt b/androidApp/src/main/java/com/kyant/backdrop/catalog/destinations/DialogContent.kt index 01dff9a..a0a9ac3 100644 --- a/androidApp/src/main/java/com/kyant/backdrop/catalog/destinations/DialogContent.kt +++ b/androidApp/src/main/java/com/kyant/backdrop/catalog/destinations/DialogContent.kt @@ -105,7 +105,7 @@ fun DialogContent() { ) { Row( Modifier - .clip(Capsule) + .clip(Capsule()) .background(containerColor.copy(0.2f)) .clickable {} .height(48f.dp) @@ -121,7 +121,7 @@ fun DialogContent() { } Row( Modifier - .clip(Capsule) + .clip(Capsule()) .background(accentColor) .clickable {} .height(48f.dp) diff --git a/androidApp/src/main/java/com/kyant/backdrop/catalog/destinations/MagnifierContent.kt b/androidApp/src/main/java/com/kyant/backdrop/catalog/destinations/MagnifierContent.kt index 7f6ab83..74687da 100644 --- a/androidApp/src/main/java/com/kyant/backdrop/catalog/destinations/MagnifierContent.kt +++ b/androidApp/src/main/java/com/kyant/backdrop/catalog/destinations/MagnifierContent.kt @@ -69,7 +69,7 @@ fun MagnifierContent() { } .draggable2D(rememberDraggable2DState { delta -> offset += delta }) .layerBackdrop(cursorBackdrop) - .background(accentColor, Capsule) + .background(accentColor, Capsule()) .size(4f.dp, 24f.dp) ) @@ -82,7 +82,7 @@ fun MagnifierContent() { } .drawBackdrop( backdrop = rememberCombinedBackdrop(backdrop, contentBackdrop, cursorBackdrop), - shape = { Capsule }, + shape = { Capsule() }, effects = { lens( 8f.dp.toPx(), diff --git a/backdrop/build.gradle.kts b/backdrop/build.gradle.kts index e40dd7c..39506de 100644 --- a/backdrop/build.gradle.kts +++ b/backdrop/build.gradle.kts @@ -84,7 +84,7 @@ mavenPublishing { publishToMavenCentral() signAllPublications() - coordinates("io.github.kyant0", "backdrop", "2.0.0-alpha02") + coordinates("io.github.kyant0", "backdrop", "2.0.0-alpha03") pom { name.set("Backdrop") diff --git a/backdrop/src/commonMain/kotlin/com/kyant/backdrop/effects/Lens.kt b/backdrop/src/commonMain/kotlin/com/kyant/backdrop/effects/Lens.kt index 217901b..f77fb88 100644 --- a/backdrop/src/commonMain/kotlin/com/kyant/backdrop/effects/Lens.kt +++ b/backdrop/src/commonMain/kotlin/com/kyant/backdrop/effects/Lens.kt @@ -1,6 +1,7 @@ package com.kyant.backdrop.effects import androidx.annotation.FloatRange +import androidx.compose.foundation.shape.AbsoluteRoundedCornerShape import androidx.compose.foundation.shape.CornerBasedShape import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.util.fastCoerceAtLeast @@ -61,7 +62,28 @@ fun BackdropEffectScope.lens( private val BackdropEffectScope.cornerRadii: FloatArray? get() = when (val shape = shape) { is RoundedRectangularShape -> { - shape.cornerRadii(size, layoutDirection, this) + val corners = shape.corners(size, layoutDirection, this) + floatArrayOf( + corners.topLeft, + corners.topRight, + corners.bottomRight, + corners.bottomLeft + ) + } + + is AbsoluteRoundedCornerShape -> { + val size = size + val maxRadius = size.minDimension / 2f + val topLeft = shape.topStart.toPx(size, this) + val topRight = shape.topEnd.toPx(size, this) + val bottomRight = shape.bottomEnd.toPx(size, this) + val bottomLeft = shape.bottomStart.toPx(size, this) + floatArrayOf( + topLeft.fastCoerceAtMost(maxRadius), + topRight.fastCoerceAtMost(maxRadius), + bottomRight.fastCoerceAtMost(maxRadius), + bottomLeft.fastCoerceAtMost(maxRadius) + ) } is CornerBasedShape -> { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 940f885..c360a09 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,11 +1,11 @@ [versions] agp = "9.0.0" -kotlin = "2.3.0" +kotlin = "2.3.10" -activity = "1.12.2" +activity = "1.12.4" core = "1.17.0" -compose = "1.10.0" -kyantShapes = "1.1.0" +compose = "1.10.1" +kyantShapes = "1.2.0" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "core" }