From cbab539817fbf9dab51bdc889a7e9ceff2b757e3 Mon Sep 17 00:00:00 2001 From: faiface Date: Sat, 19 Aug 2017 13:21:08 +0200 Subject: layers: Layers and Layer dispatch events --- layers/layers.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/layers/layers.go b/layers/layers.go index 7cad37e..8e8ed3a 100644 --- a/layers/layers.go +++ b/layers/layers.go @@ -5,6 +5,8 @@ import ( "errors" "image" "image/draw" + + "github.com/faiface/gui/event" ) type ImageFlusher interface { @@ -13,6 +15,7 @@ type ImageFlusher interface { } type Layers struct { + event.Dispatch dst ImageFlusher layers list.List } @@ -48,7 +51,18 @@ func (l *Layers) Flush(r image.Rectangle) { l.dst.Flush(r) } +func (l *Layers) Happen(event string) bool { + for e := l.layers.Front(); e != nil; e = e.Next() { + layer := e.Value.(*Layer) + if layer.Happen(event) { + return true + } + } + return false +} + type Layer struct { + event.Dispatch l *Layers e *list.Element rgba *image.RGBA -- cgit v1.2.3