ui/uilayout/padding.go
2024-06-17 15:58:12 +02:00

46 lines
807 B
Go

package uilayout
import "fyne.io/fyne/v2"
type Padding struct {
top float32
bottom float32
left float32
right float32
}
func NewPadding(
top, bottom, left, right float32,
) *Padding {
return &Padding{
top: top,
bottom: bottom,
left: left,
right: right,
}
}
func (p *Padding) MinSize(objects []fyne.CanvasObject) fyne.Size {
w := p.left + p.right
h := p.top + p.bottom
if len(objects) > 0 {
w += objects[0].MinSize().Width
h += objects[0].MinSize().Height
}
return fyne.NewSize(w, h)
}
func (p *Padding) Layout(
objects []fyne.CanvasObject,
containerSize fyne.Size,
) {
pos := fyne.NewPos(p.left, p.top)
if len(objects) > 0 {
o := objects[0]
size := containerSize.Subtract(
fyne.NewSize(p.left+p.right, p.top+p.bottom))
o.Resize(size)
o.Move(pos)
}
}