diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2024-05-09 16:15:52 -0400 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2024-05-09 16:15:52 -0400 |
| commit | 76980fe3014b5c133c4e30590e92bd922aa9b9c1 (patch) | |
| tree | ebbce4a1cda33f9e2f4dd9c188b9ee0e50379ce8 | |
| parent | 2609e5c2ee21366110a4146648fff8b84d892c2f (diff) | |
| download | volute-76980fe3014b5c133c4e30590e92bd922aa9b9c1.zip | |
refactor image widget draw function
| -rw-r--r-- | gui/widget/widget.go | 21 |
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' } |