Restructered spacing controls & added margin helpers.

This commit is contained in:
Sander Schobers 2019-03-13 19:03:06 +01:00
parent 3ea0d76efb
commit a3aa398909
3 changed files with 62 additions and 44 deletions

View File

@ -1,23 +0,0 @@
package ui
// FixedSize wraps the supplied control to fill exactly the space specified.
func FixedSize(c Control, w, h float32) Control {
return BuildSpacing(c, func(s *Spacing) {
s.Width = Fixed(w)
s.Height = Fixed(h)
})
}
// FixedHeight wraps the supplied control to fill exactly the height specified. Width is taken from wrapped control.
func FixedHeight(c Control, h float32) Control {
return BuildSpacing(c, func(s *Spacing) {
s.Height = Fixed(h)
})
}
// FixedWidth wraps the supplied control to fill exactly the width specified. Height is taken from wrapped control.
func FixedWidth(c Control, w float32) Control {
return BuildSpacing(c, func(s *Spacing) {
s.Width = Fixed(w)
})
}

View File

@ -93,3 +93,65 @@ func (s *Spacing) SetSize(w, h float32) {
s.Width = Fixed(w)
s.Height = Fixed(h)
}
// FixedSize wraps the Control c to fill exactly the space specified.
func FixedSize(c Control, w, h float32) Control {
return BuildSpacing(c, func(s *Spacing) {
s.Width = Fixed(w)
s.Height = Fixed(h)
})
}
// FixedHeight wraps the Control c to fill exactly the height specified. Width is taken from Control c.
func FixedHeight(c Control, h float32) Control {
return BuildSpacing(c, func(s *Spacing) {
s.Height = Fixed(h)
})
}
// FixedWidth wraps the Control c to fill exactly the width specified. Height is taken from Control c.
func FixedWidth(c Control, w float32) Control {
return BuildSpacing(c, func(s *Spacing) {
s.Width = Fixed(w)
})
}
// Margin wraps the Control c to have equal margins on all sides.
func Margin(c Control, m float32) *Spacing {
return Margins(c, m, m, m, m)
}
// MarginAxes wraps the Control c to have same margins horizontally (left, right) and vertically (top, left).
func MarginAxes(c Control, hor, ver float32) *Spacing {
return Margins(c, hor, ver, hor, ver)
}
// Margins wraps the Control c to have different margins on all sides.
func Margins(c Control, left, top, right, bottom float32) *Spacing {
return BuildSpacing(c, func(s *Spacing) {
s.Margin.Left = Fixed(left)
s.Margin.Top = Fixed(top)
s.Margin.Right = Fixed(right)
s.Margin.Bottom = Fixed(bottom)
})
}
func stretch(c Control, w, h bool) *Spacing {
return BuildSpacing(c, func(s *Spacing) {
if w {
s.Width = Infinite()
}
if h {
s.Height = Infinite()
}
})
}
// Stretch wraps the Control c to stretch in both directions.
func Stretch(c Control) Control { return stretch(c, true, true) }
// StretchHeight wraps the Control c to stretch vertically. Width is taken from Control c.
func StretchHeight(c Control) Control { return stretch(c, false, true) }
// StretchWidth wraps the Control c to stretch horizontally. Height is taken from Control c.
func StretchWidth(c Control) Control { return stretch(c, true, false) }

View File

@ -1,21 +0,0 @@
package ui
func newStretch(c Control, w, h bool) *Spacing {
return BuildSpacing(c, func(s *Spacing) {
if w {
s.Width = Infinite()
}
if h {
s.Height = Infinite()
}
})
}
// Stretch wraps the supplied control to stretch in both directions.
func Stretch(c Control) Control { return newStretch(c, true, true) }
// StretchHeight wraps the supplied control to stretch vertically. Width is taken from wrapped control.
func StretchHeight(c Control) Control { return newStretch(c, false, true) }
// StretchWidth wraps the supplied control to stretch horizontally. Height is taken from wrapped control.
func StretchWidth(c Control) Control { return newStretch(c, true, false) }