blob: 1dcf34a8e7a15978a91f59859df150de8ee1f44c (
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
39
40
|
package layout
import (
"fmt"
"image"
"image/draw"
)
type EventDrawer interface {
Event() <-chan EventConsume
Draw() chan<- ImageFlush
}
type EventConsume struct {
Event string
Consume chan<- bool
}
func SendEvent(ch chan<- EventConsume, format string, a ...interface{}) (consume <-chan bool) {
cons := make(chan bool)
ch <- EventConsume{fmt.Sprintf(format, a...), cons}
return cons
}
func (ec EventConsume) Matches(format string, a ...interface{}) bool {
_, err := fmt.Sscanf(ec.Event, format, a...)
return err == nil
}
type ImageFlush struct {
Image chan<- draw.Image
Flush <-chan image.Rectangle
}
func SendDraw(ch chan<- ImageFlush) (img <-chan draw.Image, flush chan<- image.Rectangle) {
imgC := make(chan draw.Image)
flushC := make(chan image.Rectangle)
ch <- ImageFlush{imgC, flushC}
return imgC, flushC
}
|