From cfc7ab023d52a80058f96e6f67fb512dcb44e938 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Mon, 5 Oct 2026 12:14:04 -0400 Subject: [PATCH] Snap animated paths to MyGo's path-cache grid; removes cross-test snapshot flake --- AGENTS.md | 1 + internal/paint.go | 8 ++++++++ spinner.go | 2 +- testdata/snapshots/darwin/button-dark.png | Bin 10318 -> 10309 bytes testdata/snapshots/darwin/button-light.png | Bin 9934 -> 9932 bytes 5 files changed, 10 insertions(+), 1 deletion(-) diff --git a/AGENTS.md b/AGENTS.md index 5f4eda3..27aa41b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -37,6 +37,7 @@ testdata/snapshots/ /-.png - Focus: `internal.Ring(e, k.Focus, radius)` for the 2 DIP ring with 2 DIP gap. - State marks (checked, selected, progress) use `OnAccent` on `Accent`, or `AccentText`, never `Accent` alone on dark surfaces (2.44:1). - Ornament color only for dividers, corners, panel titles. No gradients, glow, glass or texture. +- Animated paths: pass coordinates through `internal.Snap(p, v)`. MyGo caches path masks by quarter-pixel keys (ui/path.go); unsnapped motion reuses near-miss masks and breaks snapshots. - Durations: `mujica.Motion(c, theme.StateDuration)`; popups use `theme.PopupDuration`. - Disabled blocks input before handling it (`Disabled(true)`); MyGo dims disabled elements, do not add opacity. - Copy shown by a component comes from `msg(c, key)`; business copy comes from the caller. diff --git a/internal/paint.go b/internal/paint.go index 7e7f951..f1cd9f4 100644 --- a/internal/paint.go +++ b/internal/paint.go @@ -2,6 +2,8 @@ package internal import ( + "math" + "github.com/egoist/mygo/ui" "mujicaui/theme" @@ -33,3 +35,9 @@ func Diamond(cx, cy, s float32) *ui.Path { p.Close() return &p } + +// Snap rounds v to MyGo's quarter-device-pixel path cache grid. +func Snap(p *ui.Painter, v float32) float32 { + g := 4 * p.Scale() + return float32(math.Round(float64(v*g))) / g +} diff --git a/spinner.go b/spinner.go index 75ee900..990ba09 100644 --- a/spinner.go +++ b/spinner.go @@ -48,7 +48,7 @@ func Spinner(c *ui.Context, opts SpinnerOptions) *ui.Element { x := cx + rad*float32(math.Cos(a)) y := cy + rad*float32(math.Sin(a)) alpha := 1 - float32(i)*0.22 - p.FillPath(internal.Diamond(x, y, r.W*0.3), color.Alpha(alpha)) + p.FillPath(internal.Diamond(internal.Snap(p, x), internal.Snap(p, y), internal.Snap(p, r.W*0.3)), color.Alpha(alpha)) } }) if opts.ShowLabel { diff --git a/testdata/snapshots/darwin/button-dark.png b/testdata/snapshots/darwin/button-dark.png index fd0d7f4753177f12747f9b50e811587c477c87f2..26539164df773103d20ce043f54387410cef7a7c 100644 GIT binary patch delta 9135 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 aA%IG#V+!BwXBvT?4;e`XiPBGo{{IHYi|nWX delta 9141 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 RQU^UJDKUA`GGW8-{|mD9p_>2z diff --git a/testdata/snapshots/darwin/button-light.png b/testdata/snapshots/darwin/button-light.png index 5629ae476c1a1defefc061c1ba25fe1855ad012e..b85d2e5dfb032decc3efaea3a1739c793db53815 100644 GIT binary patch delta 8629 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