aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--env.go6
-rw-r--r--mux.go16
-rw-r--r--win/win.go5
3 files changed, 17 insertions, 10 deletions
diff --git a/env.go b/env.go
index cd71b5b..c1800d6 100644
--- a/env.go
+++ b/env.go
@@ -5,7 +5,7 @@ import (
"image/draw"
)
-type Env struct {
- Events <-chan Event
- Draw chan<- func(draw.Image) image.Rectangle
+type Env interface {
+ Events() <-chan Event
+ Draw() chan<- func(draw.Image) image.Rectangle
}
diff --git a/mux.go b/mux.go
index cbe3488..7b051cb 100644
--- a/mux.go
+++ b/mux.go
@@ -19,13 +19,13 @@ func NewMux(env Env) (mux *Mux, master Env) {
go func() {
for d := range drawChan {
- env.Draw <- d
+ env.Draw() <- d
}
- close(env.Draw)
+ close(env.Draw())
}()
go func() {
- for e := range env.Events {
+ for e := range env.Events() {
mux.mu.Lock()
for _, eventsIn := range mux.eventsIns {
eventsIn <- e
@@ -46,10 +46,18 @@ func (mux *Mux) MakeEnv() Env {
return mux.makeEnv(false)
}
+type muxEnv struct {
+ events <-chan Event
+ draw chan<- func(draw.Image) image.Rectangle
+}
+
+func (m *muxEnv) Events() <-chan Event { return m.events }
+func (m *muxEnv) Draw() chan<- func(draw.Image) image.Rectangle { return m.draw }
+
func (mux *Mux) makeEnv(master bool) Env {
eventsOut, eventsIn := MakeEventsChan()
drawChan := make(chan func(draw.Image) image.Rectangle)
- env := Env{eventsOut, drawChan}
+ env := &muxEnv{eventsOut, drawChan}
mux.mu.Lock()
mux.eventsIns = append(mux.eventsIns, eventsIn)
diff --git a/win/win.go b/win/win.go
index 552f58d..3948bc4 100644
--- a/win/win.go
+++ b/win/win.go
@@ -112,9 +112,8 @@ type Win struct {
img *image.RGBA
}
-func (w *Win) Env() gui.Env {
- return gui.Env{Events: w.eventsOut, Draw: w.draw}
-}
+func (w *Win) Events() <-chan gui.Event { return w.eventsOut }
+func (w *Win) Draw() chan<- func(draw.Image) image.Rectangle { return w.draw }
func (w *Win) eventThread() {
var moX, moY int