From 87541071aa82fd57865617f8b48c86a4e653a278 Mon Sep 17 00:00:00 2001 From: igor Date: Fri, 22 May 2026 17:23:02 +0200 Subject: [PATCH] downgrade ebiten/v2 v2.5.9 --- go.mod | 9 ++++--- go.sum | 36 ++++++++++++++++++--------- internal/ui/draw.go | 59 +++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 83 insertions(+), 21 deletions(-) diff --git a/go.mod b/go.mod index ebef285..d480960 100644 --- a/go.mod +++ b/go.mod @@ -3,16 +3,17 @@ module kidskeyboard go 1.24.0 require ( - github.com/hajimehoshi/ebiten/v2 v2.9.9 + github.com/hajimehoshi/ebiten/v2 v2.5.9 golang.org/x/image v0.31.0 ) require ( - github.com/ebitengine/gomobile v0.0.0-20250923094054-ea854a63cce1 // indirect - github.com/ebitengine/hideconsole v1.0.0 // indirect - github.com/ebitengine/oto/v3 v3.4.0 // indirect github.com/ebitengine/purego v0.9.0 // indirect + github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b // indirect + github.com/hajimehoshi/oto/v2 v2.4.1 // indirect github.com/jezek/xgb v1.1.1 // indirect + golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56 // indirect + golang.org/x/mobile v0.0.0-20230301163155-e0f57694e12c // indirect golang.org/x/sync v0.17.0 // indirect golang.org/x/sys v0.36.0 // indirect ) diff --git a/go.sum b/go.sum index c2b7ea3..caa83b4 100644 --- a/go.sum +++ b/go.sum @@ -1,24 +1,36 @@ -github.com/ebitengine/gomobile v0.0.0-20250923094054-ea854a63cce1 h1:+kz5iTT3L7uU+VhlMfTb8hHcxLO3TlaELlX8wa4XjA0= -github.com/ebitengine/gomobile v0.0.0-20250923094054-ea854a63cce1/go.mod h1:lKJoeixeJwnFmYsBny4vvCJGVFc3aYDalhuDsfZzWHI= -github.com/ebitengine/hideconsole v1.0.0 h1:5J4U0kXF+pv/DhiXt5/lTz0eO5ogJ1iXb8Yj1yReDqE= -github.com/ebitengine/hideconsole v1.0.0/go.mod h1:hTTBTvVYWKBuxPr7peweneWdkUwEuHuB3C1R/ielR1A= -github.com/ebitengine/oto/v3 v3.4.0 h1:br0PgASsEWaoWn38b2Goe7m1GKFYfNgnsjSd5Gg+/bQ= -github.com/ebitengine/oto/v3 v3.4.0/go.mod h1:IOleLVD0m+CMak3mRVwsYY8vTctQgOM0iiL6S7Ar7eI= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ebitengine/purego v0.9.0 h1:mh0zpKBIXDceC63hpvPuGLiJ8ZAa3DfrFTudmfi8A4k= github.com/ebitengine/purego v0.9.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= -github.com/hajimehoshi/bitmapfont/v4 v4.1.0 h1:eE3qa5Do4qhowZVIHjsrX5pYyyPN6sAFWMsO7QREm3U= -github.com/hajimehoshi/bitmapfont/v4 v4.1.0/go.mod h1:/PD+aLjAJ0F2UoQx6hkOfXqWN7BkroDUMr5W+IT1dpE= -github.com/hajimehoshi/ebiten/v2 v2.9.9 h1:JdDag6Ndj12iD4lxQGG8kbsrh7ssj4Sbzth6r929H/M= -github.com/hajimehoshi/ebiten/v2 v2.9.9/go.mod h1:DAt4tnkYYpCvu3x9i1X/nK/vOruNXIlYq/tBXxnhrXM= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b h1:GgabKamyOYguHqHjSkDACcgoPIz3w0Dis/zJ1wyHHHU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/hajimehoshi/bitmapfont/v2 v2.2.3 h1:jmq/TMNj352V062Tr5e3hAoipkoxCbY1JWTzor0zNps= +github.com/hajimehoshi/bitmapfont/v2 v2.2.3/go.mod h1:sWM8ejdkGSXaQGlZcegMRx4DyEPOWYyXqsBKIs+Yhzk= +github.com/hajimehoshi/ebiten/v2 v2.5.9 h1:xwPrSr4rgB7LgdAKBH9bW7YT8EBBpiruAzykf6QFCv8= +github.com/hajimehoshi/ebiten/v2 v2.5.9/go.mod h1:PrOaLXiRkqAtImDIx2x/7jQdZHHuTcrcQZx5WFQtnK0= +github.com/hajimehoshi/oto/v2 v2.4.1 h1:iTfZSulqdmQ5Hh4tVyVzNnK3aA4SgjbDapSM0YH3Lc4= +github.com/hajimehoshi/oto/v2 v2.4.1/go.mod h1:guyF8uIgSrchrKewS1E6Xyx7joUbKOi4g9W7vpcYBSc= github.com/jezek/xgb v1.1.1 h1:bE/r8ZZtSv7l9gk6nU0mYx51aXrvnyb44892TwSaqS4= github.com/jezek/xgb v1.1.1/go.mod h1:nrhwO0FX/enq75I7Y7G8iN1ubpSGZEiA3v9e9GyRFlk= -github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU= -github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56 h1:estk1glOnSVeJ9tdEZZc5mAMDZk5lNJNyJ6DvrBkTEU= +golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.31.0 h1:mLChjE2MV6g1S7oqbXC0/UcKijjm5fnJLUYKIYrLESA= golang.org/x/image v0.31.0/go.mod h1:R9ec5Lcp96v9FTF+ajwaH3uGxPH4fKfHHAVbUILxghA= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20230301163155-e0f57694e12c h1:Gk61ECugwEHL6IiyyNLXNzmu8XslmRP2dS0xjIYhbb4= +golang.org/x/mobile v0.0.0-20230301163155-e0f57694e12c/go.mod h1:aAjjkJNdrh3PMckS4B10TGS2nag27cbKR1y2BpUxsiY= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= diff --git a/internal/ui/draw.go b/internal/ui/draw.go index 3676bf8..014aeac 100644 --- a/internal/ui/draw.go +++ b/internal/ui/draw.go @@ -5,8 +5,8 @@ import ( "math" "github.com/hajimehoshi/ebiten/v2" + "github.com/hajimehoshi/ebiten/v2/ebitenutil" "github.com/hajimehoshi/ebiten/v2/text" - "github.com/hajimehoshi/ebiten/v2/vector" "golang.org/x/image/font/basicfont" ) @@ -17,19 +17,68 @@ var whitePixel = func() *ebiten.Image { }() func Rect(screen *ebiten.Image, x, y, w, h float32, clr color.Color) { - vector.FillRect(screen, x, y, w, h, clr, true) + ebitenutil.DrawRect(screen, float64(x), float64(y), float64(w), float64(h), clr) } func RectOutline(screen *ebiten.Image, x, y, w, h, stroke float32, clr color.Color) { - vector.StrokeRect(screen, x, y, w, h, stroke, clr, true) + if w <= 0 || h <= 0 || stroke <= 0 { + return + } + if stroke > w { + stroke = w + } + if stroke > h { + stroke = h + } + Rect(screen, x, y, w, stroke, clr) + Rect(screen, x, y+h-stroke, w, stroke, clr) + Rect(screen, x, y, stroke, h, clr) + Rect(screen, x+w-stroke, y, stroke, h, clr) } func Line(screen *ebiten.Image, x1, y1, x2, y2, width float32, clr color.Color) { - vector.StrokeLine(screen, x1, y1, x2, y2, width, clr, true) + dx := x2 - x1 + dy := y2 - y1 + length := float32(math.Hypot(float64(dx), float64(dy))) + if length <= 0 || width <= 0 { + return + } + + r, g, b, a := clr.RGBA() + op := &ebiten.DrawImageOptions{} + op.GeoM.Scale(float64(length), float64(width)) + op.GeoM.Translate(0, -float64(width)/2) + op.GeoM.Rotate(math.Atan2(float64(dy), float64(dx))) + op.GeoM.Translate(float64(x1), float64(y1)) + op.ColorM.Scale( + float64(r)/0xffff, + float64(g)/0xffff, + float64(b)/0xffff, + float64(a)/0xffff, + ) + screen.DrawImage(whitePixel, op) } func Circle(screen *ebiten.Image, x, y, r float32, clr color.Color) { - vector.FillCircle(screen, x, y, r, clr, true) + if r <= 0 { + return + } + ri := int(math.Ceil(float64(r))) + for dy := -ri; dy <= ri; dy++ { + fy := float64(dy) + if math.Abs(fy) > float64(r) { + continue + } + halfWidth := math.Sqrt(float64(r)*float64(r) - fy*fy) + ebitenutil.DrawRect( + screen, + float64(x)-halfWidth, + float64(y)+fy, + halfWidth*2, + 1, + clr, + ) + } } func Triangle(screen *ebiten.Image, x1, y1, x2, y2, x3, y3 float32, clr color.Color) {