35 lines
782 B
Go
35 lines
782 B
Go
|
package alui
|
||
|
|
||
|
import "opslag.de/schobers/geom"
|
||
|
|
||
|
type Column struct {
|
||
|
Proxy
|
||
|
|
||
|
panel *StackPanel
|
||
|
}
|
||
|
|
||
|
func NewColumn() *Column {
|
||
|
c := &Column{}
|
||
|
c.Init()
|
||
|
return c
|
||
|
}
|
||
|
|
||
|
func (c *Column) AddChild(child ...Control) {
|
||
|
c.panel.Children = append(c.panel.Children, child...)
|
||
|
}
|
||
|
|
||
|
func (c *Column) Init() {
|
||
|
c.panel = &StackPanel{Orientation: OrientationVertical}
|
||
|
c.Proxy.Target = c.panel
|
||
|
}
|
||
|
|
||
|
func (c *Column) Layout(ctx *Context, bounds geom.RectangleF32) {}
|
||
|
|
||
|
func (c *Column) Render(ctx *Context, bounds geom.RectangleF32) {
|
||
|
columnHeight := c.Proxy.DesiredSize(ctx).Y
|
||
|
width, center := bounds.Dx(), bounds.Center()
|
||
|
columnBounds := geom.RectF32(.25*width, center.Y-.5*columnHeight, .75*width, center.Y+.5*columnHeight)
|
||
|
c.Proxy.Layout(ctx, columnBounds)
|
||
|
c.Proxy.Render(ctx, columnBounds)
|
||
|
}
|