Liveness spinner: a 30-degree gap punched through the status ring band orbits on the wall clock (one turn per 2 s, all states including link-dead and MEASURING), so a static GOOD panel can never be mistaken for a hung app; one bg-colour stroke capsule at the byte-counter-free clock phase, no new primitives
This commit is contained in:
@@ -75,6 +75,10 @@ const (
|
||||
btnBorder = 2
|
||||
holdDuration = time.Second
|
||||
|
||||
spinGap = math.Pi / 6
|
||||
spinPunch = 9
|
||||
spinPeriod = 2 * time.Second
|
||||
|
||||
versionSpotSide = 200
|
||||
)
|
||||
|
||||
@@ -386,6 +390,12 @@ func (d *display) drawHeader(phy phyDisplay, hv histView, measuring bool,
|
||||
d.fb.roundRect(rx, ry, ringD, ringD, ringD/2, col)
|
||||
d.fb.roundRect(rx+ringEdge, ry+ringEdge, ringD-2*ringEdge, ringD-2*ringEdge,
|
||||
ringD/2-ringEdge, uiBg)
|
||||
spin := float64(now.UnixNano()%int64(spinPeriod)) / float64(spinPeriod)
|
||||
cx, cy := float64(rx)+ringD/2, float64(ry)+ringD/2
|
||||
cr := (ringD - ringEdge) / 2.0
|
||||
a0, a1 := 2*math.Pi*spin-spinGap/2, 2*math.Pi*spin+spinGap/2
|
||||
d.fb.stroke(cx+cr*math.Sin(a0), cy-cr*math.Cos(a0),
|
||||
cx+cr*math.Sin(a1), cy-cr*math.Cos(a1), spinPunch, uiBg)
|
||||
switch {
|
||||
case measuring:
|
||||
case good:
|
||||
|
||||
Reference in New Issue
Block a user