@@ -9,7 +9,6 @@ import androidx.compose.runtime.LaunchedEffect
99import androidx.compose.runtime.withFrameMillis
1010import org.polyfrost.compose.composables.PolyBox
1111import org.polyfrost.compose.composables.PolyModifier
12- import org.polyfrost.compose.composables.background
1312import org.polyfrost.compose.composables.size
1413import org.polyfrost.compose.render.PolyColor
1514import org.polyfrost.evergreenhud.client.utils.copy
@@ -21,6 +20,8 @@ import org.polyfrost.oneconfig.api.hud.v1.Hud
2120import java.time.LocalTime
2221import java.time.ZoneId
2322
23+ private const val DEFAULT_SIDE = 64f
24+
2425private const val DETAIL_FIVE_MINUTE_MARKS = 0
2526private const val DETAIL_MINUTE_MARKS = 1
2627private const val DETAIL_NUMBERS = 2
@@ -53,6 +54,12 @@ class ClockHud : Hud(
5354
5455 private var rev = mutableStateOf(0 )
5556
57+ private var _staticW = mutableStateOf(DEFAULT_SIDE )
58+ override var staticW: Float get() = _staticW .value; set(v) { _staticW .value = v }
59+
60+ private var _staticH = mutableStateOf(DEFAULT_SIDE )
61+ override var staticH: Float get() = _staticH .value; set(v) { _staticH .value = v }
62+
5663 override fun defaultPosition (): Pair <Float , Float > = 0f to 0f
5764
5865 override fun clone (): Hud = (super .clone() as ClockHud ).apply {
@@ -61,6 +68,8 @@ class ClockHud : Hud(
6168 minuteHandColor = this @ClockHud.minuteHandColor.copy()
6269 secondHandColor = this @ClockHud.secondHandColor.copy()
6370 rev = mutableStateOf(0 )
71+ _staticW = mutableStateOf(this @ClockHud.staticW)
72+ _staticH = mutableStateOf(this @ClockHud.staticH)
6473 }
6574
6675 fun applyGlobalColor (color : PolyColor ) {
@@ -78,17 +87,14 @@ class ClockHud : Hud(
7887 }
7988 }
8089 staticWidth = true
81- val side = when {
82- staticW < 16f || staticH < 16f -> 64f
83- staticW == 200f && staticH == 48f -> 64f
84- else -> minOf(staticW, staticH)
85- }
86- staticW = side
87- staticH = side
90+ tree?.getProp(" staticW" )?.addMetadata(" default" , DEFAULT_SIDE )
91+ tree?.getProp(" staticH" )?.addMetadata(" default" , DEFAULT_SIDE )
8892 }
8993
9094 override fun minimumSize (): Pair <Float , Float > = 16f to 16f
9195
96+ override fun canMergeBackground (): Boolean = true
97+
9298 @Composable
9399 override fun Content () {
94100 rev.value
@@ -107,10 +113,9 @@ class ClockHud : Hud(
107113 val detailColor = PolyColor (textColor, textChroma, textChromaSpeed)
108114 val fontName = getPoppinsFontName()
109115 if (showBackground) {
110- PolyBox (
111- modifier = sizeModifier
112- .background(PolyColor (bgColor, bgChroma, bgChromaSpeed), bgRadius)
113- ) {
116+ // when merged, HudManager draws this HUD's background as part of the fused neighbour
117+ // shape, which hudBackground() accounts for
118+ PolyBox (modifier = hudBackground(sizeModifier)) {
114119 Clock (timeMillis, handWidth, ticking, fiveMinuteMarks, minuteMarks, numbers, hourHandColor, minuteHandColor, secondHandColor, detailColor, fontName, bgRadius, sizeModifier)
115120 }
116121 } else {
0 commit comments