Files
supersonic/ui/layout/centerpadlayout.go
T
2022-12-17 16:52:13 -08:00

40 lines
854 B
Go

package layout
import (
"fyne.io/fyne/v2"
)
var _ fyne.Layout = (*CenterPadLayout)(nil)
type CenterPadLayout struct {
PadLeftRight float32
PadTopBottom float32
}
// only supports one object
func (c *CenterPadLayout) MinSize(objects []fyne.CanvasObject) fyne.Size {
if len(objects) == 0 {
return fyne.NewSize(0, 0)
}
return fyne.Size{
Width: objects[0].MinSize().Width + c.PadLeftRight*2,
Height: objects[0].MinSize().Height + c.PadTopBottom*2,
}
}
func (c *CenterPadLayout) Layout(objects []fyne.CanvasObject, size fyne.Size) {
if len(objects) == 0 {
return
}
objSize := objects[0].MinSize()
xOffs := (size.Width - objSize.Width) / 2
yOffs := (size.Height - objSize.Height) / 2
for _, child := range objects {
if !child.Visible() {
continue
}
child.Move(fyne.NewPos(xOffs, yOffs))
child.Resize(child.MinSize())
}
}