aboutsummaryrefslogtreecommitdiffstats
path: root/gui/widget/widget.go
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-05-09 16:15:52 -0400
committerSam Anthony <sam@samanthony.xyz>2024-05-09 16:15:52 -0400
commit76980fe3014b5c133c4e30590e92bd922aa9b9c1 (patch)
treeebbce4a1cda33f9e2f4dd9c188b9ee0e50379ce8 /gui/widget/widget.go
parent2609e5c2ee21366110a4146648fff8b84d892c2f (diff)
downloadvolute-76980fe3014b5c133c4e30590e92bd922aa9b9c1.zip
refactor image widget draw function
Diffstat (limited to 'gui/widget/widget.go')
-rw-r--r--gui/widget/widget.go21
1 files changed, 11 insertions, 10 deletions
diff --git a/gui/widget/widget.go b/gui/widget/widget.go
index 0908942..2e7c671 100644
--- a/gui/widget/widget.go
+++ b/gui/widget/widget.go
@@ -19,6 +19,8 @@ var (
GREEN = color.RGBA{51, 102, 0, 255}
BLACK = color.Gray{0}
WHITE = color.Gray{255}
+
+ interpolator = xdraw.ApproxBiLinear
)
func Label(text string, r image.Rectangle, env gui.Env, wg *sync.WaitGroup) {
@@ -135,30 +137,29 @@ func Image(imChan <-chan image.Image, r image.Rectangle, env gui.Env, wg *sync.W
defer wg.Done()
defer close(env.Draw())
- interp := xdraw.ApproxBiLinear
- redraw := func(im image.Image) func(draw.Image) image.Rectangle {
- return func(drw draw.Image) image.Rectangle {
- interp.Scale(drw, r, im, im.Bounds(), draw.Src, nil)
- return r
- }
- }
var im image.Image = image.NewGray(r)
-
for {
select {
case im = <-imChan:
- env.Draw() <- redraw(im)
+ env.Draw() <- imageDraw(im, r)
case event, ok := <-env.Events():
if !ok {
return
}
if event, ok := event.(win.WiFocus); ok && event.Focused {
- env.Draw() <- redraw(im)
+ env.Draw() <- imageDraw(im, r)
}
}
}
}
+func imageDraw(im image.Image, r image.Rectangle) func(draw.Image) image.Rectangle {
+ return func(drw draw.Image) image.Rectangle {
+ interpolator.Scale(drw, r, im, im.Bounds(), draw.Src, nil)
+ return r
+ }
+}
+
func isDigit(r rune) bool {
return '0' <= r && r <= '9'
}