aboutsummaryrefslogtreecommitdiffstats
path: root/layer
diff options
context:
space:
mode:
Diffstat (limited to 'layer')
-rw-r--r--layer/layer.go102
1 files changed, 0 insertions, 102 deletions
diff --git a/layer/layer.go b/layer/layer.go
deleted file mode 100644
index 1e84075..0000000
--- a/layer/layer.go
+++ /dev/null
@@ -1,102 +0,0 @@
-package layer
-
-import (
- "container/list"
- "errors"
- "image"
- "image/draw"
-
- "github.com/faiface/gui/event"
-)
-
-type ImageFlusher interface {
- Image() *image.RGBA
- Flush(r image.Rectangle)
-}
-
-type List struct {
- event.Dispatch
- dst ImageFlusher
- layers list.List
-}
-
-func (l *List) Dst(dst ImageFlusher) {
- l.dst = dst
- for e := l.layers.Back(); e != nil; e = e.Prev() {
- layer := e.Value.(*Layer)
- rgba := image.NewRGBA(dst.Image().Bounds())
- draw.Draw(rgba, layer.rgba.Bounds(), layer.rgba, layer.rgba.Bounds().Min, draw.Src)
- layer.rgba = rgba
- }
-}
-
-func (l *List) Push() *Layer {
- layer := &Layer{
- l: l,
- rgba: image.NewRGBA(l.dst.Image().Bounds()),
- }
- layer.e = l.layers.PushFront(layer)
- return layer
-}
-
-func (l *List) Remove(layer *Layer) {
- if layer.l == nil {
- panic(errors.New("layer: Remove: layer already removed"))
- }
- l.layers.Remove(layer.e)
- layer.l = nil
-}
-
-func (l *List) Front(layer *Layer) {
- if layer.l == nil {
- panic(errors.New("layer: Front: layer removed"))
- }
- l.layers.MoveToFront(layer.e)
-}
-
-func (l *List) Flush(r image.Rectangle) {
- if l.dst == nil {
- panic(errors.New("layer: Flush: no destination"))
- }
- draw.Draw(l.dst.Image(), r, image.Transparent, r.Min, draw.Src)
- for e := l.layers.Back(); e != nil; e = e.Prev() {
- layer := e.Value.(*Layer)
- draw.Draw(l.dst.Image(), r, layer.rgba, r.Min, draw.Over)
- }
- l.dst.Flush(r)
-}
-
-func (l *List) Happen(event string) bool {
- if l.Dispatch.Happen(event) {
- return true
- }
- 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 *List
- e *list.Element
- rgba *image.RGBA
-}
-
-func (l *Layer) List() *List {
- return l.l
-}
-
-func (l *Layer) Image() *image.RGBA {
- return l.rgba
-}
-
-func (l *Layer) Flush(r image.Rectangle) {
- if l.l == nil {
- panic(errors.New("layer: Flush: layer removed"))
- }
- l.l.Flush(r)
-}