summaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
Diffstat (limited to 'ui')
-rw-r--r--ui/src/commonMain/kotlin/coffee/liz/rookery/ui/Penguin.kt13
1 files changed, 13 insertions, 0 deletions
diff --git a/ui/src/commonMain/kotlin/coffee/liz/rookery/ui/Penguin.kt b/ui/src/commonMain/kotlin/coffee/liz/rookery/ui/Penguin.kt
index 5dca583..4a77f33 100644
--- a/ui/src/commonMain/kotlin/coffee/liz/rookery/ui/Penguin.kt
+++ b/ui/src/commonMain/kotlin/coffee/liz/rookery/ui/Penguin.kt
@@ -35,6 +35,7 @@ import androidx.compose.ui.graphics.drawscope.DrawScope
import androidx.compose.ui.graphics.drawscope.Stroke
import androidx.compose.ui.graphics.drawscope.rotate
import androidx.compose.ui.graphics.drawscope.translate
+import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.layout.onSizeChanged
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.semantics.clearAndSetSemantics
@@ -82,6 +83,18 @@ fun DrawScope.drawPenguin(sheet: ImageBitmap, cell: Pair<Int, Int>, at: Offset,
)
}
+/** The alert penguin as the app's window icon, redrawn at whatever size the window system asks for. */
+@Composable
+fun rememberPenguinIcon(): Painter {
+ val sheet = penguinSheet()
+ return remember(sheet) {
+ object : Painter() {
+ override val intrinsicSize = Size(SPRITE.toFloat(), SPRITE.toFloat())
+ override fun DrawScope.onDraw() = drawPenguin(sheet, PenguinAnim.ALERT.frames.first(), Offset.Zero, size.minDimension)
+ }
+ }
+}
+
/** A single penguin doing one thing. */
@Composable
fun Penguin(anim: PenguinAnim, size: Dp = 64.dp, reducedMotion: Boolean = false, modifier: Modifier = Modifier, frameMs: Long = 220) {