diff options
| author | faiface <faiface@ksp.sk> | 2017-08-20 12:21:09 +0200 |
|---|---|---|
| committer | faiface <faiface@ksp.sk> | 2017-08-20 12:21:09 +0200 |
| commit | 10be55086fa39416dac47db7e0ffa2dd8f4e7ce1 (patch) | |
| tree | a9694cffb047dcc904d3d9a3cab07f1fe0ed6a91 /layout/sub.go | |
| parent | 49051b7cfbd2e8970f28c82861311577ba1c2765 (diff) | |
| download | gui-10be55086fa39416dac47db7e0ffa2dd8f4e7ce1.zip | |
layout: use event.Sscan
Diffstat (limited to 'layout/sub.go')
| -rw-r--r-- | layout/sub.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/layout/sub.go b/layout/sub.go new file mode 100644 index 0000000..09076a2 --- /dev/null +++ b/layout/sub.go @@ -0,0 +1,37 @@ +package layout + +import ( + "image" + + "github.com/faiface/gui/event" +) + +func Sub(eif EventImageFlusher, r image.Rectangle) EventImageFlusher { + s := &sub{ + eif: eif, + } + s.Event("resize", func(evt string) bool { + var x1, y1, x2, y2 int + event.Sscan(evt, &x1, &y1, &x2, &y2) + r := image.Rect(x1, y1, x2, y2) + s.sub = eif.Image().SubImage(r).(*image.RGBA) + return false + }) + s.Happen(event.Sprint("resize", r.Min.X, r.Min.Y, r.Max.X, r.Max.Y)) + return s +} + +type sub struct { + event.Dispatch + eif EventImageFlusher + sub *image.RGBA +} + +func (s *sub) Image() *image.RGBA { + return s.sub +} + +func (s *sub) Flush(r image.Rectangle) { + r = s.sub.Bounds().Intersect(r) + s.eif.Flush(r) +} |