package tins2020 import ( "image/color" "opslag.de/schobers/zntg" "opslag.de/schobers/zntg/ui" ) type IconButton struct { ui.Button Active bool } func NewIconButton(icon string, click ui.EventEmptyFn) *IconButton { b := &IconButton{ Button: ui.Button{ Icon: icon, IconHeight: 48, Type: ui.ButtonTypeText, HoverColor: hoverTransparentColor, }, } b.Font.Color = color.White b.ButtonClicked().AddHandler(func(ctx ui.Context, _ ui.ControlClickedArgs) { click(ctx) }) return b } func NewIconButtonConfigure(icon string, click ui.EventEmptyFn, configure func(*IconButton)) *IconButton { button := NewIconButton(icon, click) configure(button) return button } var hoverTransparentColor = zntg.MustHexColor(`#FFFFFF1F`) func (b *IconButton) Render(ctx ui.Context) { b.RenderActive(ctx) b.Button.Render(ctx) } func (b *IconButton) RenderActive(ctx ui.Context) { if b.Active && !b.Disabled && !b.IsOver() { ctx.Renderer().FillRectangle(b.Bounds(), hoverTransparentColor) } }