aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--layout/options.go34
-rw-r--r--layout/region.go7
-rw-r--r--layout/rows.go8
-rw-r--r--test/region/main.go11
-rw-r--r--test/rows/main.go6
5 files changed, 13 insertions, 53 deletions
diff --git a/layout/options.go b/layout/options.go
deleted file mode 100644
index 2ea0c81..0000000
--- a/layout/options.go
+++ /dev/null
@@ -1,34 +0,0 @@
-package layout
-
-import (
- "image/color"
-)
-
-var (
- defaultBg = color.Transparent
-)
-
-// Option is a function option for layout constructors.
-type Option func(*options)
-
-type options struct {
- bg color.Color // background color
-}
-
-// Background sets the background color of a layout.
-func Background(bg color.Color) Option {
- return func(o *options) {
- o.bg = bg
- }
-}
-
-// EvalOptions evaluates a list of option functions, returning the final set.
-func evalOptions(o ...Option) options {
- opts := options{
- bg: defaultBg,
- }
- for i := range o {
- o[i](&opts)
- }
- return opts
-}
diff --git a/layout/region.go b/layout/region.go
index 93d930a..1e4d4b1 100644
--- a/layout/region.go
+++ b/layout/region.go
@@ -2,6 +2,7 @@ package layout
import (
"image"
+ "image/color"
"image/draw"
"github.com/faiface/gui"
@@ -16,9 +17,7 @@ type Region struct {
// NewRegion creates a region layout that occupies part of the parent env's area, as determined by the resize function.
// Resize takes the area of the parent and returns the area of the region.
// It returns the child Env.
-func NewRegion(env gui.Env, resize func(image.Rectangle) image.Rectangle, o ...Option) gui.Env {
- opts := evalOptions(o...)
-
+func NewRegion(env gui.Env, clr color.Color, resize func(image.Rectangle) image.Rectangle) gui.Env {
events := make(chan gui.Event) // to child
drw := make(chan func(draw.Image) image.Rectangle) // from child
@@ -30,7 +29,7 @@ func NewRegion(env gui.Env, resize func(image.Rectangle) image.Rectangle, o ...O
// Draw background
redrawBg := func(area image.Rectangle) func(draw.Image) image.Rectangle {
- return drawSubImage(drawBackground(opts.bg), area)
+ return drawSubImage(drawBackground(clr), area)
}
env.Draw() <- redrawBg(area)
diff --git a/layout/rows.go b/layout/rows.go
index 3912878..603eddc 100644
--- a/layout/rows.go
+++ b/layout/rows.go
@@ -10,9 +10,7 @@ import (
// NewRows creates layout with nrows children arranged in rows.
// It returns a slice containing an Env for each row.
// The height of each row is determined by the draw calls received from that row.
-func NewRows(env gui.Env, nrows uint, o ...Option) []gui.Env {
- opts := evalOptions(o...)
-
+func NewRows(env gui.Env, nrows uint) []gui.Env {
// Create event and draw channels for each row
eventss := make([]chan gui.Event, nrows) // to children
drawss := make([]chan func(draw.Image) image.Rectangle, nrows) // from children
@@ -27,10 +25,6 @@ func NewRows(env gui.Env, nrows uint, o ...Option) []gui.Env {
defer closeAll(eventss)
resize := func(area image.Rectangle, rowHeights []uint) {
- // Redraw background
- env.Draw() <- drawSubImage(drawBackground(opts.bg), area)
-
- // Send resize events to rows
off := area.Min // vertical offset from parent area origin
var i uint
for i = 0; i < nrows; i++ {
diff --git a/test/region/main.go b/test/region/main.go
index f335b4f..ef7f9ac 100644
--- a/test/region/main.go
+++ b/test/region/main.go
@@ -2,6 +2,7 @@ package main
import (
"image"
+ "image/color"
"image/draw"
"time"
@@ -11,7 +12,7 @@ import (
"github.com/faiface/mainthread"
)
-var bg = gui.HexToColor("#999999") // background color
+var bgclr = gui.HexToColor("#999999") // background color
func main() {
mainthread.Run(run)
@@ -25,11 +26,11 @@ func run() {
mux, env := gui.NewMux(w)
- // Background
- back := layout.NewRegion(mux.MakeEnv(), layout.ResizeAll, layout.Background(bg))
+ // Background region
+ bg := layout.NewRegion(mux.MakeEnv(), bgclr, layout.ResizeAll)
- // Create region on top of background, in bottom-right quadrant
- region := layout.NewRegion(back, layout.ResizeQuad4)
+ // Region on top of background, in bottom-right quadrant
+ region := layout.NewRegion(bg, color.Transparent, layout.ResizeQuad4)
go blinker(region)
for event := range env.Events() {
diff --git a/test/rows/main.go b/test/rows/main.go
index 9848ddf..29b7344 100644
--- a/test/rows/main.go
+++ b/test/rows/main.go
@@ -17,7 +17,7 @@ const (
rowWidth = 128
)
-var bg = gui.HexToColor("#ffffea") // background color
+var bgclr = gui.HexToColor("#ffffea") // background color
func main() {
mainthread.Run(run)
@@ -30,8 +30,8 @@ func run() {
}
mux, env := gui.NewMux(w)
-
- rows := layout.NewRows(mux.MakeEnv(), nrows, layout.Background(bg))
+ bg := layout.NewRegion(mux.MakeEnv(), bgclr, layout.ResizeAll)
+ rows := layout.NewRows(bg, nrows)
for i, row := range rows {
go colorBlock(row, image.Pt(rowWidth, rowHeight), color.RGBA{uint8(i * 256 / 4), 0x20, 0x20, 0xFF})
}