package tins2020 import "github.com/veandco/go-sdl2/sdl" type ButtonBar struct { Container Background sdl.Color ButtonLength int32 Orientation Orientation Buttons []Control } const buttonBarWidth = 96 func (b *ButtonBar) Init(ctx *Context) error { for i := range b.Buttons { b.AddChild(b.Buttons[i]) } return b.Container.Init(ctx) } func (b *ButtonBar) Arrange(ctx *Context, bounds Rectangle) { b.Container.Arrange(ctx, bounds) length := b.ButtonLength switch b.Orientation { case OrientationHorizontal: if length == 0 { length = bounds.H } offset := bounds.X for i := range b.Buttons { b.Buttons[i].Arrange(ctx, RectSize(offset, bounds.Y, length, bounds.H)) offset += length } default: if length == 0 { length = bounds.W } offset := bounds.Y for i := range b.Buttons { b.Buttons[i].Arrange(ctx, RectSize(bounds.X, offset, bounds.W, length)) offset += length } } } func (b *ButtonBar) Render(ctx *Context) { SetDrawColor(ctx.Renderer, b.Background) ctx.Renderer.FillRect(b.Bounds.SDLPtr()) b.Container.Render(ctx) } type Orientation int const ( OrientationVertical Orientation = iota OrientationHorizontal )