From 10be55086fa39416dac47db7e0ffa2dd8f4e7ce1 Mon Sep 17 00:00:00 2001 From: faiface Date: Sun, 20 Aug 2017 12:21:09 +0200 Subject: layout: use event.Sscan --- layout/sub.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 layout/sub.go (limited to 'layout/sub.go') 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) +} -- cgit v1.2.3