From c780bd677bb7712d88f8f047bb0cfb0fb08d1be8 Mon Sep 17 00:00:00 2001 From: faiface Date: Thu, 2 May 2019 02:41:59 +0200 Subject: make Env an interface (instead of a struct) --- env.go | 6 +++--- mux.go | 16 ++++++++++++---- win/win.go | 5 ++--- 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 -- cgit v1.2.3