package alui import ( "opslag.de/schobers/allg5" "opslag.de/schobers/geom" ) var _ Control = &Button{} type Button struct { ControlBase Text string TextAlign allg5.HorizontalAlignment } func NewButton(text string, onClick func(*Context)) *Button { b := &Button{Text: text} b.OnClick = onClick return b } func (b *Button) DesiredSize(ctx *Context) geom.PointF32 { font := ctx.Fonts.Get(b.Font) w := font.TextWidth(b.Text) return geom.PtF32(w+8, font.Height()+8) } func (b *Button) Render(ctx *Context, bounds geom.RectangleF32) { fore := ctx.Palette.Primary if b.Over { fore = ctx.Palette.Dark ctx.Cursor = allg5.MouseCursorLink } font := ctx.Fonts.Get(b.Font) ctx.Fonts.DrawAlignFont(font, bounds.Min.X+4, bounds.Min.Y+4, bounds.Max.X-4, fore, b.TextAlign, b.Text) }