aboutsummaryrefslogtreecommitdiffstats
path: root/layout/sub.go
diff options
context:
space:
mode:
Diffstat (limited to 'layout/sub.go')
-rw-r--r--layout/sub.go37
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)
+}