aboutsummaryrefslogtreecommitdiffstats
path: root/layout/grid.go
diff options
context:
space:
mode:
authorClement Benard <contact@clementbenard.com>2019-07-12 17:23:28 +0200
committerClement Benard <contact@clementbenard.com>2019-07-12 17:23:28 +0200
commit0cc6367a881ab7dba48ace7b111e0eb1151c10bb (patch)
treeeabadd10783b857271f12797f1a505efec85630c /layout/grid.go
parent009f865bc5484e54f09d2173b2b3dbbf3838d391 (diff)
downloadgui-0cc6367a881ab7dba48ace7b111e0eb1151c10bb.zip
Better separation between Layout and Mux
Diffstat (limited to 'layout/grid.go')
-rw-r--r--layout/grid.go21
1 files changed, 11 insertions, 10 deletions
diff --git a/layout/grid.go b/layout/grid.go
index 9c79343..c90821a 100644
--- a/layout/grid.go
+++ b/layout/grid.go
@@ -18,7 +18,7 @@ type grid struct {
// NewGrid creates a familiar flexbox-like grid layout.
// Each row can be a different length.
-func NewGrid(env gui.Env, contents [][]*gui.Env, options ...func(*grid)) gui.Env {
+func NewGrid(contents [][]*gui.Env, options ...func(*grid)) Layout {
ret := &grid{
Background: image.Black,
Gap: 0,
@@ -29,15 +29,7 @@ func NewGrid(env gui.Env, contents [][]*gui.Env, options ...func(*grid)) gui.Env
for _, f := range options {
f(ret)
}
-
- mux, env := NewMux(env, ret)
- for _, row := range contents {
- for _, item := range row {
- *item = mux.MakeEnv()
- }
- }
-
- return env
+ return ret
}
// GridBackground changes the background of the grid to a uniform color.
@@ -73,6 +65,15 @@ func (g *grid) Redraw(drw draw.Image, bounds image.Rectangle) {
draw.Draw(drw, bounds, image.NewUniform(g.Background), image.ZP, draw.Src)
}
+func (g *grid) Items() []*gui.Env {
+ // 32 should be more than enough for most grids
+ ret := make([]*gui.Env, 0, 32)
+ for _, row := range g.Contents {
+ ret = append(ret, row...)
+ }
+ return ret
+}
+
func (g *grid) Lay(bounds image.Rectangle) []image.Rectangle {
gap := g.Gap
ret := make([]image.Rectangle, 0)