blob: c5712c402ce004bab44deb62e778147437915cd4 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package widget
import (
"sync"
"image"
"image/draw"
"volute/gui"
"volute/gui/win"
)
func Image(imChan <-chan image.Image, r image.Rectangle, env gui.Env, wg *sync.WaitGroup) {
defer wg.Done()
defer close(env.Draw())
var im image.Image = image.NewGray(r)
for {
select {
case im = <-imChan:
env.Draw() <- imageDraw(im, r)
case event, ok := <-env.Events():
if !ok {
return
}
if event, ok := event.(win.WiFocus); ok && event.Focused {
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
}
}
|