summaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authorElizabeth Alexander Hunt <me@liz.coffee>2026-11-13 16:40:02 -0800
committerElizabeth Alexander Hunt <me@liz.coffee>2026-11-13 16:40:02 -0800
commit3803f14160c30ac470bc957f8a0f2dbe67c4fd57 (patch)
treeb7cfc3e0570ef7766e053b89ca038109c353d359 /ui
parent8974b115b69bc25ebf174e8c9637373c4d206325 (diff)
downloadrookery-release.tar.gz
rookery-release.zip
Added full buildsHEADreleasemain
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) {