Преглед на файлове

renamed BorderSizes to RectBounds

danaugrs преди 7 години
родител
ревизия
32a21c838f
променени са 20 файла, в които са добавени 307 реда и са изтрити 307 реда
  1. 8 8
      gui/builder.go
  2. 2 2
      gui/button.go
  3. 2 2
      gui/checkradio.go
  4. 2 2
      gui/dropdown.go
  5. 2 2
      gui/edit.go
  6. 3 3
      gui/folder.go
  7. 2 2
      gui/image_button.go
  8. 2 2
      gui/imagelabel.go
  9. 2 2
      gui/list.go
  10. 7 7
      gui/menu.go
  11. 33 33
      gui/panel.go
  12. 3 3
      gui/scrollbar.go
  13. 2 2
      gui/scroller.go
  14. 2 2
      gui/slider.go
  15. 206 206
      gui/style_light.go
  16. 14 14
      gui/tabbar.go
  17. 7 7
      gui/table.go
  18. 3 3
      gui/tree.go
  19. 2 2
      gui/util.go
  20. 3 3
      gui/window.go

+ 8 - 8
gui/builder.go

@@ -81,7 +81,7 @@ const (
 	AttribAspectHeight   = "aspectheight"  // float32
 	AttribAspectWidth    = "aspectwidth"   // float32
 	AttribBgColor        = "bgcolor"       // Color4
-	AttribBorders        = "borders"       // BorderSizes
+	AttribBorders        = "borders"       // RectBounds
 	AttribBorderColor    = "bordercolor"   // Color4
 	AttribChecked        = "checked"       // bool
 	AttribColor          = "color"         // Color4
@@ -114,12 +114,12 @@ const (
 	AttribLineSpacing    = "linespacing"   // float32
 	AttribLines          = "lines"         // int
 	AttribMargin         = "margin"        // float32
-	AttribMargins        = "margins"       // BorderSizes
+	AttribMargins        = "margins"       // RectBounds
 	AttribMinwidth       = "minwidth"      // float32 Table
 	AttribAutoHeight     = "autoheight"    // bool
 	AttribAutoWidth      = "autowidth"     // bool
 	AttribName           = "name"          // string
-	AttribPaddings       = "paddings"      // BorderSizes
+	AttribPaddings       = "paddings"      // RectBounds
 	AttribPanel0         = "panel0"        // map[string]interface{}
 	AttribPanel1         = "panel1"        // map[string]interface{}
 	AttribParentInternal = "parent_"       // string (internal attribute)
@@ -548,12 +548,12 @@ func (b *Builder) SetAttribs(am map[string]interface{}, ipan IPanel) error {
 
 	// Set optional margin sizes
 	if am[AttribMargins] != nil {
-		panel.SetMarginsFrom(am[AttribMargins].(*BorderSizes))
+		panel.SetMarginsFrom(am[AttribMargins].(*RectBounds))
 	}
 
 	// Set optional border sizes
 	if am[AttribBorders] != nil {
-		panel.SetBordersFrom(am[AttribBorders].(*BorderSizes))
+		panel.SetBordersFrom(am[AttribBorders].(*RectBounds))
 	}
 
 	// Set optional border color
@@ -563,7 +563,7 @@ func (b *Builder) SetAttribs(am map[string]interface{}, ipan IPanel) error {
 
 	// Set optional paddings sizes
 	if am[AttribPaddings] != nil {
-		panel.SetPaddingsFrom(am[AttribPaddings].(*BorderSizes))
+		panel.SetPaddingsFrom(am[AttribPaddings].(*RectBounds))
 	}
 
 	// Set optional panel color
@@ -968,10 +968,10 @@ func AttribCheckBorderSizes(b *Builder, am map[string]interface{}, fname string)
 		return nil
 	}
 	if len(va) == 1 {
-		am[fname] = &BorderSizes{va[0], va[0], va[0], va[0]}
+		am[fname] = &RectBounds{va[0], va[0], va[0], va[0]}
 		return nil
 	}
-	am[fname] = &BorderSizes{va[0], va[1], va[2], va[3]}
+	am[fname] = &RectBounds{va[0], va[1], va[2], va[3]}
 	return nil
 }
 

+ 2 - 2
gui/button.go

@@ -34,8 +34,8 @@ type Button struct {
 
 // Button style
 type ButtonStyle struct {
-	Border      BorderSizes
-	Paddings    BorderSizes
+	Border      RectBounds
+	Paddings    RectBounds
 	BorderColor math32.Color4
 	BgColor     math32.Color
 	FgColor     math32.Color

+ 2 - 2
gui/checkradio.go

@@ -32,8 +32,8 @@ type CheckRadio struct {
 }
 
 type CheckRadioStyle struct {
-	Border      BorderSizes
-	Paddings    BorderSizes
+	Border      RectBounds
+	Paddings    RectBounds
 	BorderColor math32.Color4
 	BgColor     math32.Color4
 	FgColor     math32.Color

+ 2 - 2
gui/dropdown.go

@@ -25,8 +25,8 @@ type DropDown struct {
 
 // DropDown list style
 type DropDownStyle struct {
-	Border      BorderSizes
-	Paddings    BorderSizes
+	Border      RectBounds
+	Paddings    RectBounds
 	BorderColor math32.Color4
 	BgColor     math32.Color
 	FgColor     math32.Color

+ 2 - 2
gui/edit.go

@@ -27,8 +27,8 @@ type Edit struct {
 }
 
 type EditStyle struct {
-	Border      BorderSizes
-	Paddings    BorderSizes
+	Border      RectBounds
+	Paddings    RectBounds
 	BorderColor math32.Color4
 	BgColor     math32.Color
 	BgAlpha     float32

+ 3 - 3
gui/folder.go

@@ -19,9 +19,9 @@ type Folder struct {
 }
 
 type FolderStyle struct {
-	Margins     BorderSizes
-	Border      BorderSizes
-	Paddings    BorderSizes
+	Margins     RectBounds
+	Border      RectBounds
+	Paddings    RectBounds
 	BorderColor math32.Color4
 	BgColor     math32.Color
 	FgColor     math32.Color

+ 2 - 2
gui/image_button.go

@@ -33,8 +33,8 @@ const (
 
 // ImageButton style
 type ImageButtonStyle struct {
-	Border      BorderSizes
-	Paddings    BorderSizes
+	Border      RectBounds
+	Paddings    RectBounds
 	BorderColor math32.Color4
 	BgColor     math32.Color4
 	FgColor     math32.Color

+ 2 - 2
gui/imagelabel.go

@@ -31,8 +31,8 @@ type ImageLabel struct {
 
 // ImageLabel style
 type ImageLabelStyle struct {
-	Border      BorderSizes
-	Paddings    BorderSizes
+	Border      RectBounds
+	Paddings    RectBounds
 	BorderColor math32.Color4
 	BgColor     math32.Color4
 	FgColor     math32.Color4

+ 2 - 2
gui/list.go

@@ -44,8 +44,8 @@ type ListItemStyles struct {
 }
 
 type ListItemStyle struct {
-	Border      BorderSizes
-	Paddings    BorderSizes
+	Border      RectBounds
+	Paddings    RectBounds
 	BorderColor math32.Color4
 	BgColor     math32.Color4
 	FgColor     math32.Color

+ 7 - 7
gui/menu.go

@@ -22,8 +22,8 @@ type Menu struct {
 
 // MenuBodyStyle describes the style of the menu body
 type MenuBodyStyle struct {
-	Border      BorderSizes
-	Paddings    BorderSizes
+	Border      RectBounds
+	Paddings    RectBounds
 	BorderColor math32.Color4
 	BgColor     math32.Color
 	FgColor     math32.Color
@@ -63,14 +63,14 @@ type MenuItem struct {
 
 // MenuItemStyle describes the style of a menu item
 type MenuItemStyle struct {
-	Border           BorderSizes
-	Paddings         BorderSizes
+	Border           RectBounds
+	Paddings         RectBounds
 	BorderColor      math32.Color4
 	BgColor          math32.Color
 	FgColor          math32.Color
-	IconPaddings     BorderSizes
-	ShortcutPaddings BorderSizes
-	RiconPaddings    BorderSizes
+	IconPaddings     RectBounds
+	ShortcutPaddings RectBounds
+	RiconPaddings    RectBounds
 }
 
 // MenuItemStyles describes all the menu item styles

+ 33 - 33
gui/panel.go

@@ -54,30 +54,30 @@ type IPanel interface {
 // and a content area. The content area can be associated with a texture
 // It is the building block of most GUI widgets.
 type Panel struct {
-	*graphic.Graphic                    // Embedded graphic
-	root             *Root              // pointer to root container
-	width            float32            // external width in pixels
-	height           float32            // external height in pixels
-	mat              *material.Material // panel material
-	marginSizes      BorderSizes        // external margin sizes in pixel coordinates
-	borderSizes      BorderSizes        // border sizes in pixel coordinates
-	paddingSizes     BorderSizes        // padding sizes in pixel coordinates
-	content          Rect               // current content rectangle in pixel coordinates
-	pospix           math32.Vector3     // absolute position in pixels
-	posclip          math32.Vector3     // position in clip (NDC) coordinates
-	wclip            float32            // width in clip coordinates
-	hclip            float32            // height in clip coordinates
-	xmin             float32            // minimum absolute x this panel can use
-	xmax             float32            // maximum absolute x this panel can use
-	ymin             float32            // minimum absolute y this panel can use
-	ymax             float32            // maximum absolute y this panel can use
-	bounded          bool               // panel is bounded by its parent
-	enabled          bool               // enable event processing
-	cursorEnter      bool               // mouse enter dispatched
-	layout           ILayout            // current layout for children
-	layoutParams     interface{}        // current layout parameters used by container panel
-	uniMatrix        gls.Uniform        // model matrix uniform location cache
-	uniPanel         gls.Uniform        // panel parameters uniform location cache
+	*graphic.Graphic                // Embedded graphic
+	root         *Root              // pointer to root container
+	width        float32            // external width in pixels
+	height       float32            // external height in pixels
+	mat          *material.Material // panel material
+	marginSizes  RectBounds         // external margin sizes in pixel coordinates
+	borderSizes  RectBounds         // border sizes in pixel coordinates
+	paddingSizes RectBounds         // padding sizes in pixel coordinates
+	content      Rect               // current content rectangle in pixel coordinates
+	pospix       math32.Vector3     // absolute position in pixels
+	posclip      math32.Vector3     // position in clip (NDC) coordinates
+	wclip        float32            // width in clip coordinates
+	hclip        float32            // height in clip coordinates
+	xmin         float32            // minimum absolute x this panel can use
+	xmax         float32            // maximum absolute x this panel can use
+	ymin             float32        // minimum absolute y this panel can use
+	ymax             float32        // maximum absolute y this panel can use
+	bounded          bool           // panel is bounded by its parent
+	enabled          bool           // enable event processing
+	cursorEnter      bool           // mouse enter dispatched
+	layout           ILayout        // current layout for children
+	layoutParams     interface{}    // current layout parameters used by container panel
+	uniMatrix        gls.Uniform    // model matrix uniform location cache
+	uniPanel         gls.Uniform    // panel parameters uniform location cache
 	udata            struct {           // Combined uniform data 8 * vec4
 		bounds        math32.Vector4 // panel bounds in texture coordinates
 		borders       math32.Vector4 // panel borders in texture coordinates
@@ -328,15 +328,15 @@ func (p *Panel) SetMargins(top, right, bottom, left float32) {
 }
 
 // SetMarginsFrom sets this panel margins sizes from the specified
-// BorderSizes pointer and recalculates the panel external size
-func (p *Panel) SetMarginsFrom(src *BorderSizes) {
+// RectBounds pointer and recalculates the panel external size
+func (p *Panel) SetMarginsFrom(src *RectBounds) {
 
 	p.marginSizes = *src
 	p.resize(p.calcWidth(), p.calcHeight(), true)
 }
 
 // Margins returns the current margin sizes in pixels
-func (p *Panel) Margins() BorderSizes {
+func (p *Panel) Margins() RectBounds {
 
 	return p.marginSizes
 }
@@ -350,15 +350,15 @@ func (p *Panel) SetBorders(top, right, bottom, left float32) {
 }
 
 // SetBordersFrom sets this panel border sizes from the specified
-// BorderSizes pointer and recalculates the panel size
-func (p *Panel) SetBordersFrom(src *BorderSizes) {
+// RectBounds pointer and recalculates the panel size
+func (p *Panel) SetBordersFrom(src *RectBounds) {
 
 	p.borderSizes = *src
 	p.resize(p.calcWidth(), p.calcHeight(), true)
 }
 
 // Borders returns this panel current border sizes
-func (p *Panel) Borders() BorderSizes {
+func (p *Panel) Borders() RectBounds {
 
 	return p.borderSizes
 }
@@ -371,15 +371,15 @@ func (p *Panel) SetPaddings(top, right, bottom, left float32) {
 }
 
 // SetPaddingsFrom sets this panel padding sizes from the specified
-// BorderSizes pointer and recalculates the panel size
-func (p *Panel) SetPaddingsFrom(src *BorderSizes) {
+// RectBounds pointer and recalculates the panel size
+func (p *Panel) SetPaddingsFrom(src *RectBounds) {
 
 	p.paddingSizes = *src
 	p.resize(p.calcWidth(), p.calcHeight(), true)
 }
 
 // Paddings returns this panel padding sizes in pixels
-func (p *Panel) Paddings() BorderSizes {
+func (p *Panel) Paddings() RectBounds {
 
 	return p.paddingSizes
 }

+ 3 - 3
gui/scrollbar.go

@@ -47,15 +47,15 @@ type ScrollBarStyles struct {
 }
 
 type ScrollBarStyle struct {
-	Paddings     BorderSizes
-	Borders      BorderSizes
+	Paddings     RectBounds
+	Borders      RectBounds
 	BordersColor math32.Color4
 	Color        math32.Color
 	Button       ScrollBarButtonStyle
 }
 
 type ScrollBarButtonStyle struct {
-	Borders      BorderSizes
+	Borders      RectBounds
 	BordersColor math32.Color4
 	Color        math32.Color
 	Size         float32 	   // This is the default/minimum button size

+ 2 - 2
gui/scroller.go

@@ -28,8 +28,8 @@ type Scroller struct {
 }
 
 type ScrollerStyle struct {
-	Border      BorderSizes
-	Paddings    BorderSizes
+	Border      RectBounds
+	Paddings    RectBounds
 	BorderColor math32.Color4
 	BgColor     math32.Color
 	FgColor     math32.Color

+ 2 - 2
gui/slider.go

@@ -38,9 +38,9 @@ type Slider struct {
 
 // SliderStyle
 type SliderStyle struct {
-	Border      BorderSizes   // outer panel border sizes
+	Border      RectBounds    // outer panel border sizes
 	BorderColor math32.Color4 // outer panel border colors
-	Paddings    BorderSizes   // outer panel padding sizes
+	Paddings    RectBounds    // outer panel padding sizes
 	BgColor     math32.Color4 // outer panel color
 	FgColor     math32.Color4 // slider panel color
 }

+ 206 - 206
gui/style_light.go

@@ -44,7 +44,7 @@ func NewLightStyle() *Style {
 	fontIcon.SetBgColor4(math32.NewColor4("white", 0))
 	s.FontIcon = fontIcon
 
-	borderSizes := BorderSizes{1, 1, 1, 1}
+	borderSizes := RectBounds{1, 1, 1, 1}
 	borderColor := math32.Color4Name("DimGray")
 	borderColorDis := math32.Color4Name("LightGray")
 
@@ -62,35 +62,35 @@ func NewLightStyle() *Style {
 	s.Button = ButtonStyles{
 		Normal: ButtonStyle{
 			Border:      borderSizes,
-			Paddings:    BorderSizes{2, 4, 2, 4},
+			Paddings:    RectBounds{2, 4, 2, 4},
 			BorderColor: borderColor,
 			BgColor:     bgColor,
 			FgColor:     fgColor,
 		},
 		Over: ButtonStyle{
 			Border:      borderSizes,
-			Paddings:    BorderSizes{2, 4, 2, 4},
+			Paddings:    RectBounds{2, 4, 2, 4},
 			BorderColor: borderColor,
 			BgColor:     bgColorOver,
 			FgColor:     fgColor,
 		},
 		Focus: ButtonStyle{
 			Border:      borderSizes,
-			Paddings:    BorderSizes{2, 4, 2, 4},
+			Paddings:    RectBounds{2, 4, 2, 4},
 			BorderColor: borderColor,
 			BgColor:     bgColorOver,
 			FgColor:     fgColor,
 		},
 		Pressed: ButtonStyle{
-			Border:      BorderSizes{2, 2, 2, 2},
-			Paddings:    BorderSizes{2, 4, 2, 4},
+			Border:      RectBounds{2, 2, 2, 2},
+			Paddings:    RectBounds{2, 4, 2, 4},
 			BorderColor: borderColor,
 			BgColor:     bgColorOver,
 			FgColor:     fgColor,
 		},
 		Disabled: ButtonStyle{
 			Border:      borderSizes,
-			Paddings:    BorderSizes{2, 4, 2, 4},
+			Paddings:    RectBounds{2, 4, 2, 4},
 			BorderColor: borderColorDis,
 			BgColor:     bgColor,
 			FgColor:     fgColorDis,
@@ -100,29 +100,29 @@ func NewLightStyle() *Style {
 	// CheckRadio styles
 	s.CheckRadio = CheckRadioStyles{
 		Normal: CheckRadioStyle{
-			Border:      BorderSizes{0, 0, 0, 0},
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Border:      RectBounds{0, 0, 0, 0},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColor4,
 			FgColor:     fgColor,
 		},
 		Over: CheckRadioStyle{
-			Border:      BorderSizes{0, 0, 0, 0},
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Border:      RectBounds{0, 0, 0, 0},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColor4Over,
 			FgColor:     fgColor,
 		},
 		Focus: CheckRadioStyle{
-			Border:      BorderSizes{0, 0, 0, 0},
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Border:      RectBounds{0, 0, 0, 0},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColor4Over,
 			FgColor:     fgColor,
 		},
 		Disabled: CheckRadioStyle{
-			Border:      BorderSizes{0, 0, 0, 0},
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Border:      RectBounds{0, 0, 0, 0},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColor4,
 			FgColor:     fgColorDis,
@@ -132,8 +132,8 @@ func NewLightStyle() *Style {
 	// Edit styles
 	s.Edit = EditStyles{
 		Normal: EditStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Border:      RectBounds{1, 1, 1, 1},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColor,
 			BgAlpha:     1.0,
@@ -141,8 +141,8 @@ func NewLightStyle() *Style {
 			HolderColor: math32.Color{0.4, 0.4, 0.4},
 		},
 		Over: EditStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Border:      RectBounds{1, 1, 1, 1},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColorOver,
 			BgAlpha:     1.0,
@@ -150,8 +150,8 @@ func NewLightStyle() *Style {
 			HolderColor: math32.Color{0.4, 0.4, 0.4},
 		},
 		Focus: EditStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Border:      RectBounds{1, 1, 1, 1},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColorOver,
 			BgAlpha:     1.0,
@@ -159,8 +159,8 @@ func NewLightStyle() *Style {
 			HolderColor: math32.Color{0.4, 0.4, 0.4},
 		},
 		Disabled: EditStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Border:      RectBounds{1, 1, 1, 1},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColor,
 			BgAlpha:     1.0,
@@ -172,36 +172,36 @@ func NewLightStyle() *Style {
 	// ScrollBar style
 	s.ScrollBar = ScrollBarStyles{
 		Normal: ScrollBarStyle{
-			Paddings:     BorderSizes{1, 1, 1, 1},
-			Borders:      BorderSizes{1, 1, 1, 1},
+			Paddings:     RectBounds{1, 1, 1, 1},
+			Borders:      RectBounds{1, 1, 1, 1},
 			BordersColor: borderColor,
 			Color:        math32.Color{0.8, 0.8, 0.8},
 			Button: ScrollBarButtonStyle{
-				Borders:      BorderSizes{1, 1, 1, 1},
+				Borders:      RectBounds{1, 1, 1, 1},
 				BordersColor: borderColor,
 				Color:        math32.Color{0.5, 0.5, 0.5},
 				Size:         30,
 			},
 		},
 		Over: ScrollBarStyle{
-			Paddings:     BorderSizes{1, 1, 1, 1},
-			Borders:      BorderSizes{1, 1, 1, 1},
+			Paddings:     RectBounds{1, 1, 1, 1},
+			Borders:      RectBounds{1, 1, 1, 1},
 			BordersColor: borderColor,
 			Color:        math32.Color{0.8, 0.8, 0.8},
 			Button: ScrollBarButtonStyle{
-				Borders:      BorderSizes{1, 1, 1, 1},
+				Borders:      RectBounds{1, 1, 1, 1},
 				BordersColor: borderColor,
 				Color:        math32.Color{0.5, 0.5, 0.5},
 				Size:         30,
 			},
 		},
 		Disabled: ScrollBarStyle{
-			Paddings:     BorderSizes{1, 1, 1, 1},
-			Borders:      BorderSizes{1, 1, 1, 1},
+			Paddings:     RectBounds{1, 1, 1, 1},
+			Borders:      RectBounds{1, 1, 1, 1},
 			BordersColor: borderColor,
 			Color:        math32.Color{0.8, 0.8, 0.8},
 			Button: ScrollBarButtonStyle{
-				Borders:      BorderSizes{1, 1, 1, 1},
+				Borders:      RectBounds{1, 1, 1, 1},
 				BordersColor: borderColor,
 				Color:        math32.Color{0.5, 0.5, 0.5},
 				Size:         30,
@@ -214,28 +214,28 @@ func NewLightStyle() *Style {
 		Normal: SliderStyle{
 			Border:      borderSizes,
 			BorderColor: borderColor,
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BgColor:     math32.Color4{0.8, 0.8, 0.8, 1},
 			FgColor:     math32.Color4{0, 0.8, 0, 1},
 		},
 		Over: SliderStyle{
 			Border:      borderSizes,
 			BorderColor: borderColor,
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BgColor:     math32.Color4{1, 1, 1, 1},
 			FgColor:     math32.Color4{0, 1, 0, 1},
 		},
 		Focus: SliderStyle{
 			Border:      borderSizes,
 			BorderColor: borderColor,
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BgColor:     math32.Color4{1, 1, 1, 1},
 			FgColor:     math32.Color4{0, 1, 0, 1},
 		},
 		Disabled: SliderStyle{
 			Border:      borderSizes,
 			BorderColor: borderColor,
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BgColor:     math32.Color4{0.8, 0.8, 0.8, 1},
 			FgColor:     math32.Color4{0, 0.8, 0, 1},
 		},
@@ -262,37 +262,37 @@ func NewLightStyle() *Style {
 
 	s.Window = WindowStyles{
 		Normal: WindowStyle{
-			Border:           BorderSizes{4, 4, 4, 4},
-			Paddings:         BorderSizes{0, 0, 0, 0},
+			Border:           RectBounds{4, 4, 4, 4},
+			Paddings:         RectBounds{0, 0, 0, 0},
 			BorderColor:      math32.Color4{0.2, 0.2, 0.2, 1},
-			TitleBorders:     BorderSizes{0, 0, 1, 0},
+			TitleBorders:     RectBounds{0, 0, 1, 0},
 			TitleBorderColor: math32.Color4{0, 0, 0, 1},
 			TitleBgColor:     math32.Color4{0, 1, 0, 1},
 			TitleFgColor:     math32.Color4{0, 0, 0, 1},
 		},
 		Over: WindowStyle{
-			Border:           BorderSizes{4, 4, 4, 4},
-			Paddings:         BorderSizes{0, 0, 0, 0},
+			Border:           RectBounds{4, 4, 4, 4},
+			Paddings:         RectBounds{0, 0, 0, 0},
 			BorderColor:      math32.Color4{0.2, 0.2, 0.2, 1},
-			TitleBorders:     BorderSizes{0, 0, 1, 0},
+			TitleBorders:     RectBounds{0, 0, 1, 0},
 			TitleBorderColor: math32.Color4{0, 0, 0, 1},
 			TitleBgColor:     math32.Color4{0, 1, 0, 1},
 			TitleFgColor:     math32.Color4{0, 0, 0, 1},
 		},
 		Focus: WindowStyle{
-			Border:           BorderSizes{4, 4, 4, 4},
-			Paddings:         BorderSizes{0, 0, 0, 0},
+			Border:           RectBounds{4, 4, 4, 4},
+			Paddings:         RectBounds{0, 0, 0, 0},
 			BorderColor:      math32.Color4{0.2, 0.2, 0.2, 1},
-			TitleBorders:     BorderSizes{0, 0, 1, 0},
+			TitleBorders:     RectBounds{0, 0, 1, 0},
 			TitleBorderColor: math32.Color4{0, 0, 0, 1},
 			TitleBgColor:     math32.Color4{0, 1, 0, 1},
 			TitleFgColor:     math32.Color4{0, 0, 0, 1},
 		},
 		Disabled: WindowStyle{
-			Border:           BorderSizes{4, 4, 4, 4},
-			Paddings:         BorderSizes{0, 0, 0, 0},
+			Border:           RectBounds{4, 4, 4, 4},
+			Paddings:         RectBounds{0, 0, 0, 0},
 			BorderColor:      math32.Color4{0.2, 0.2, 0.2, 1},
-			TitleBorders:     BorderSizes{0, 0, 1, 0},
+			TitleBorders:     RectBounds{0, 0, 1, 0},
 			TitleBorderColor: math32.Color4{0, 0, 0, 1},
 			TitleBgColor:     math32.Color4{0, 1, 0, 1},
 			TitleFgColor:     math32.Color4{0, 0, 0, 1},
@@ -302,29 +302,29 @@ func NewLightStyle() *Style {
 	// Scroller styles
 	s.Scroller = ScrollerStyles{
 		Normal: ScrollerStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Border:      RectBounds{1, 1, 1, 1},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColor,
 			FgColor:     fgColor,
 		},
 		Over: ScrollerStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Border:      RectBounds{1, 1, 1, 1},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColorOver,
 			FgColor:     fgColor,
 		},
 		Focus: ScrollerStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Border:      RectBounds{1, 1, 1, 1},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColorOver,
 			FgColor:     fgColor,
 		},
 		Disabled: ScrollerStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Border:      RectBounds{1, 1, 1, 1},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColor,
 			FgColor:     fgColor,
@@ -335,29 +335,29 @@ func NewLightStyle() *Style {
 	s.List = ListStyles{
 		Scroller: &ScrollerStyles{
 			Normal: ScrollerStyle{
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{0, 0, 0, 0},
+				Border:      RectBounds{1, 1, 1, 1},
+				Paddings:    RectBounds{0, 0, 0, 0},
 				BorderColor: borderColor,
 				BgColor:     bgColor,
 				FgColor:     fgColor,
 			},
 			Over: ScrollerStyle{
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{0, 0, 0, 0},
+				Border:      RectBounds{1, 1, 1, 1},
+				Paddings:    RectBounds{0, 0, 0, 0},
 				BorderColor: borderColor,
 				BgColor:     bgColorOver,
 				FgColor:     fgColor,
 			},
 			Focus: ScrollerStyle{
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{0, 0, 0, 0},
+				Border:      RectBounds{1, 1, 1, 1},
+				Paddings:    RectBounds{0, 0, 0, 0},
 				BorderColor: borderColor,
 				BgColor:     bgColorOver,
 				FgColor:     fgColor,
 			},
 			Disabled: ScrollerStyle{
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{0, 0, 0, 0},
+				Border:      RectBounds{1, 1, 1, 1},
+				Paddings:    RectBounds{0, 0, 0, 0},
 				BorderColor: borderColor,
 				BgColor:     bgColor,
 				FgColor:     fgColor,
@@ -365,29 +365,29 @@ func NewLightStyle() *Style {
 		},
 		Item: &ListItemStyles{
 			Normal: ListItemStyle{
-				Border:      BorderSizes{1, 0, 1, 0},
-				Paddings:    BorderSizes{0, 0, 0, 2},
+				Border:      RectBounds{1, 0, 1, 0},
+				Paddings:    RectBounds{0, 0, 0, 2},
 				BorderColor: math32.Color4{0, 0, 0, 0},
 				BgColor:     bgColor4,
 				FgColor:     fgColor,
 			},
 			Selected: ListItemStyle{
-				Border:      BorderSizes{1, 0, 1, 0},
-				Paddings:    BorderSizes{0, 0, 0, 2},
+				Border:      RectBounds{1, 0, 1, 0},
+				Paddings:    RectBounds{0, 0, 0, 2},
 				BorderColor: math32.Color4{0, 0, 0, 0},
 				BgColor:     bgColor4Sel,
 				FgColor:     fgColorSel,
 			},
 			Highlighted: ListItemStyle{
-				Border:      BorderSizes{1, 0, 1, 0},
-				Paddings:    BorderSizes{0, 0, 0, 2},
+				Border:      RectBounds{1, 0, 1, 0},
+				Paddings:    RectBounds{0, 0, 0, 2},
 				BorderColor: math32.Color4{0, 0, 0, 1},
 				BgColor:     bgColor4Over,
 				FgColor:     fgColor,
 			},
 			SelHigh: ListItemStyle{
-				Border:      BorderSizes{1, 0, 1, 0},
-				Paddings:    BorderSizes{0, 0, 0, 2},
+				Border:      RectBounds{1, 0, 1, 0},
+				Paddings:    RectBounds{0, 0, 0, 2},
 				BorderColor: math32.Color4{0, 0, 0, 1},
 				BgColor:     bgColor4Sel,
 				FgColor:     fgColorSel,
@@ -397,29 +397,29 @@ func NewLightStyle() *Style {
 
 	s.DropDown = DropDownStyles{
 		Normal: &DropDownStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 2},
+			Border:      RectBounds{1, 1, 1, 1},
+			Paddings:    RectBounds{0, 0, 0, 2},
 			BorderColor: borderColor,
 			BgColor:     bgColor,
 			FgColor:     fgColor,
 		},
 		Over: &DropDownStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 2},
+			Border:      RectBounds{1, 1, 1, 1},
+			Paddings:    RectBounds{0, 0, 0, 2},
 			BorderColor: borderColor,
 			BgColor:     bgColorOver,
 			FgColor:     fgColor,
 		},
 		Focus: &DropDownStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 2},
+			Border:      RectBounds{1, 1, 1, 1},
+			Paddings:    RectBounds{0, 0, 0, 2},
 			BorderColor: borderColor,
 			BgColor:     bgColorOver,
 			FgColor:     fgColor,
 		},
 		Disabled: &DropDownStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 2},
+			Border:      RectBounds{1, 1, 1, 1},
+			Paddings:    RectBounds{0, 0, 0, 2},
 			BorderColor: borderColor,
 			BgColor:     bgColor,
 			FgColor:     fgColor,
@@ -428,36 +428,36 @@ func NewLightStyle() *Style {
 
 	s.Folder = FolderStyles{
 		Normal: &FolderStyle{
-			Margins:     BorderSizes{0, 0, 0, 0},
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{2, 0, 2, 2},
+			Margins:     RectBounds{0, 0, 0, 0},
+			Border:      RectBounds{1, 1, 1, 1},
+			Paddings:    RectBounds{2, 0, 2, 2},
 			BorderColor: borderColor,
 			BgColor:     bgColor,
 			FgColor:     fgColor,
 			Icons:       [2]string{icon.ExpandMore, icon.ExpandLess},
 		},
 		Over: &FolderStyle{
-			Margins:     BorderSizes{0, 0, 0, 0},
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{2, 0, 2, 2},
+			Margins:     RectBounds{0, 0, 0, 0},
+			Border:      RectBounds{1, 1, 1, 1},
+			Paddings:    RectBounds{2, 0, 2, 2},
 			BorderColor: borderColor,
 			BgColor:     bgColorOver,
 			FgColor:     fgColor,
 			Icons:       [2]string{icon.ExpandMore, icon.ExpandLess},
 		},
 		Focus: &FolderStyle{
-			Margins:     BorderSizes{0, 0, 0, 0},
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{2, 2, 2, 2},
+			Margins:     RectBounds{0, 0, 0, 0},
+			Border:      RectBounds{1, 1, 1, 1},
+			Paddings:    RectBounds{2, 2, 2, 2},
 			BorderColor: borderColor,
 			BgColor:     bgColorOver,
 			FgColor:     fgColor,
 			Icons:       [2]string{icon.ExpandMore, icon.ExpandLess},
 		},
 		Disabled: &FolderStyle{
-			Margins:     BorderSizes{0, 0, 0, 0},
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{2, 2, 2, 2},
+			Margins:     RectBounds{0, 0, 0, 0},
+			Border:      RectBounds{1, 1, 1, 1},
+			Paddings:    RectBounds{2, 2, 2, 2},
 			BorderColor: borderColor,
 			BgColor:     bgColorOver,
 			FgColor:     fgColor,
@@ -469,29 +469,29 @@ func NewLightStyle() *Style {
 		List: &ListStyles{
 			Scroller: &ScrollerStyles{
 				Normal: ScrollerStyle{
-					Border:      BorderSizes{1, 1, 1, 1},
-					Paddings:    BorderSizes{0, 0, 0, 0},
+					Border:      RectBounds{1, 1, 1, 1},
+					Paddings:    RectBounds{0, 0, 0, 0},
 					BorderColor: borderColor,
 					BgColor:     bgColor,
 					FgColor:     fgColor,
 				},
 				Over: ScrollerStyle{
-					Border:      BorderSizes{1, 1, 1, 1},
-					Paddings:    BorderSizes{0, 0, 0, 0},
+					Border:      RectBounds{1, 1, 1, 1},
+					Paddings:    RectBounds{0, 0, 0, 0},
 					BorderColor: borderColor,
 					BgColor:     bgColorOver,
 					FgColor:     fgColor,
 				},
 				Focus: ScrollerStyle{
-					Border:      BorderSizes{1, 1, 1, 1},
-					Paddings:    BorderSizes{0, 0, 0, 0},
+					Border:      RectBounds{1, 1, 1, 1},
+					Paddings:    RectBounds{0, 0, 0, 0},
 					BorderColor: borderColor,
 					BgColor:     bgColorOver,
 					FgColor:     fgColor,
 				},
 				Disabled: ScrollerStyle{
-					Border:      BorderSizes{1, 1, 1, 1},
-					Paddings:    BorderSizes{0, 0, 0, 0},
+					Border:      RectBounds{1, 1, 1, 1},
+					Paddings:    RectBounds{0, 0, 0, 0},
 					BorderColor: borderColor,
 					BgColor:     bgColor,
 					FgColor:     fgColor,
@@ -499,29 +499,29 @@ func NewLightStyle() *Style {
 			},
 			Item: &ListItemStyles{
 				Normal: ListItemStyle{
-					Border:      BorderSizes{1, 0, 1, 0},
-					Paddings:    BorderSizes{0, 0, 0, 2},
+					Border:      RectBounds{1, 0, 1, 0},
+					Paddings:    RectBounds{0, 0, 0, 2},
 					BorderColor: math32.Color4{0, 0, 0, 0},
 					BgColor:     bgColor4,
 					FgColor:     fgColor,
 				},
 				Selected: ListItemStyle{
-					Border:      BorderSizes{1, 0, 1, 0},
-					Paddings:    BorderSizes{0, 0, 0, 2},
+					Border:      RectBounds{1, 0, 1, 0},
+					Paddings:    RectBounds{0, 0, 0, 2},
 					BorderColor: math32.Color4{0, 0, 0, 0},
 					BgColor:     bgColor4Sel,
 					FgColor:     fgColorSel,
 				},
 				Highlighted: ListItemStyle{
-					Border:      BorderSizes{1, 0, 1, 0},
-					Paddings:    BorderSizes{0, 0, 0, 2},
+					Border:      RectBounds{1, 0, 1, 0},
+					Paddings:    RectBounds{0, 0, 0, 2},
 					BorderColor: math32.Color4{0, 0, 0, 1},
 					BgColor:     bgColor4Over,
 					FgColor:     fgColor,
 				},
 				SelHigh: ListItemStyle{
-					Border:      BorderSizes{1, 0, 1, 0},
-					Paddings:    BorderSizes{0, 0, 0, 2},
+					Border:      RectBounds{1, 0, 1, 0},
+					Paddings:    RectBounds{0, 0, 0, 2},
 					BorderColor: math32.Color4{0, 0, 0, 1},
 					BgColor:     bgColor4Sel,
 					FgColor:     fgColorSel,
@@ -530,8 +530,8 @@ func NewLightStyle() *Style {
 		},
 		Node: &TreeNodeStyles{
 			Normal: TreeNodeStyle{
-				Border:      BorderSizes{0, 0, 0, 0},
-				Paddings:    BorderSizes{0, 0, 0, 0},
+				Border:      RectBounds{0, 0, 0, 0},
+				Paddings:    RectBounds{0, 0, 0, 0},
 				BorderColor: borderColor,
 				BgColor:     bgColor4,
 				FgColor:     fgColor,
@@ -544,36 +544,36 @@ func NewLightStyle() *Style {
 	s.ControlFolder = ControlFolderStyles{
 		Folder: &FolderStyles{
 			Normal: &FolderStyle{
-				Margins:     BorderSizes{0, 0, 0, 0},
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{2, 0, 2, 2},
+				Margins:     RectBounds{0, 0, 0, 0},
+				Border:      RectBounds{1, 1, 1, 1},
+				Paddings:    RectBounds{2, 0, 2, 2},
 				BorderColor: math32.Color4{0, 0, 0, 0},
 				BgColor:     math32.Color{0, 0.5, 1},
 				FgColor:     fgColor,
 				Icons:       [2]string{icon.ExpandMore, icon.ExpandLess},
 			},
 			Over: &FolderStyle{
-				Margins:     BorderSizes{0, 0, 0, 0},
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{2, 0, 2, 2},
+				Margins:     RectBounds{0, 0, 0, 0},
+				Border:      RectBounds{1, 1, 1, 1},
+				Paddings:    RectBounds{2, 0, 2, 2},
 				BorderColor: math32.Color4{0, 0, 0, 0},
 				BgColor:     math32.Color{0, 0.5, 1},
 				FgColor:     fgColor,
 				Icons:       [2]string{icon.ExpandMore, icon.ExpandLess},
 			},
 			Focus: &FolderStyle{
-				Margins:     BorderSizes{0, 0, 0, 0},
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{2, 2, 2, 2},
+				Margins:     RectBounds{0, 0, 0, 0},
+				Border:      RectBounds{1, 1, 1, 1},
+				Paddings:    RectBounds{2, 2, 2, 2},
 				BorderColor: math32.Color4{0, 0, 0, 0},
 				BgColor:     math32.Color{0, 0.5, 1},
 				FgColor:     fgColor,
 				Icons:       [2]string{icon.ExpandMore, icon.ExpandLess},
 			},
 			Disabled: &FolderStyle{
-				Margins:     BorderSizes{0, 0, 0, 0},
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{2, 2, 2, 2},
+				Margins:     RectBounds{0, 0, 0, 0},
+				Border:      RectBounds{1, 1, 1, 1},
+				Paddings:    RectBounds{2, 2, 2, 2},
 				BorderColor: math32.Color4{0, 0, 0, 0},
 				BgColor:     math32.Color{0, 0.5, 1},
 				FgColor:     fgColor,
@@ -584,29 +584,29 @@ func NewLightStyle() *Style {
 			List: &ListStyles{
 				Scroller: &ScrollerStyles{
 					Normal: ScrollerStyle{
-						Border:      BorderSizes{1, 1, 1, 1},
-						Paddings:    BorderSizes{0, 2, 0, 0},
+						Border:      RectBounds{1, 1, 1, 1},
+						Paddings:    RectBounds{0, 2, 0, 0},
 						BorderColor: borderColor,
 						BgColor:     bgColor,
 						FgColor:     fgColor,
 					},
 					Over: ScrollerStyle{
-						Border:      BorderSizes{1, 1, 1, 1},
-						Paddings:    BorderSizes{0, 2, 0, 0},
+						Border:      RectBounds{1, 1, 1, 1},
+						Paddings:    RectBounds{0, 2, 0, 0},
 						BorderColor: borderColor,
 						BgColor:     bgColorOver,
 						FgColor:     fgColor,
 					},
 					Focus: ScrollerStyle{
-						Border:      BorderSizes{1, 1, 1, 1},
-						Paddings:    BorderSizes{0, 2, 0, 0},
+						Border:      RectBounds{1, 1, 1, 1},
+						Paddings:    RectBounds{0, 2, 0, 0},
 						BorderColor: borderColor,
 						BgColor:     bgColorOver,
 						FgColor:     fgColor,
 					},
 					Disabled: ScrollerStyle{
-						Border:      BorderSizes{1, 1, 1, 1},
-						Paddings:    BorderSizes{0, 2, 0, 0},
+						Border:      RectBounds{1, 1, 1, 1},
+						Paddings:    RectBounds{0, 2, 0, 0},
 						BorderColor: borderColor,
 						BgColor:     bgColor,
 						FgColor:     fgColor,
@@ -614,29 +614,29 @@ func NewLightStyle() *Style {
 				},
 				Item: &ListItemStyles{
 					Normal: ListItemStyle{
-						Border:      BorderSizes{1, 0, 1, 0},
-						Paddings:    BorderSizes{0, 0, 0, 2},
+						Border:      RectBounds{1, 0, 1, 0},
+						Paddings:    RectBounds{0, 0, 0, 2},
 						BorderColor: math32.Color4{0, 0, 0, 0},
 						BgColor:     bgColor4,
 						FgColor:     fgColor,
 					},
 					Selected: ListItemStyle{
-						Border:      BorderSizes{1, 0, 1, 0},
-						Paddings:    BorderSizes{0, 0, 0, 2},
+						Border:      RectBounds{1, 0, 1, 0},
+						Paddings:    RectBounds{0, 0, 0, 2},
 						BorderColor: math32.Color4{0, 0, 0, 0},
 						BgColor:     bgColor4,
 						FgColor:     fgColor,
 					},
 					Highlighted: ListItemStyle{
-						Border:      BorderSizes{1, 0, 1, 0},
-						Paddings:    BorderSizes{0, 0, 0, 2},
+						Border:      RectBounds{1, 0, 1, 0},
+						Paddings:    RectBounds{0, 0, 0, 2},
 						BorderColor: math32.Color4{0, 0, 0, 1},
 						BgColor:     bgColor4Over,
 						FgColor:     fgColor,
 					},
 					SelHigh: ListItemStyle{
-						Border:      BorderSizes{1, 0, 1, 0},
-						Paddings:    BorderSizes{0, 0, 0, 2},
+						Border:      RectBounds{1, 0, 1, 0},
+						Paddings:    RectBounds{0, 0, 0, 2},
 						BorderColor: math32.Color4{0, 0, 0, 1},
 						BgColor:     bgColor4Sel,
 						FgColor:     fgColorSel,
@@ -645,8 +645,8 @@ func NewLightStyle() *Style {
 			},
 			Node: &TreeNodeStyles{
 				Normal: TreeNodeStyle{
-					Border:      BorderSizes{0, 0, 0, 0},
-					Paddings:    BorderSizes{0, 0, 0, 0},
+					Border:      RectBounds{0, 0, 0, 0},
+					Paddings:    RectBounds{0, 0, 0, 0},
 					BorderColor: borderColor,
 					BgColor:     bgColor4,
 					FgColor:     fgColor,
@@ -661,29 +661,29 @@ func NewLightStyle() *Style {
 	s.Menu = MenuStyles{
 		Body: &MenuBodyStyles{
 			Normal: MenuBodyStyle{
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{2, 2, 2, 2},
+				Border:      RectBounds{1, 1, 1, 1},
+				Paddings:    RectBounds{2, 2, 2, 2},
 				BorderColor: borderColor,
 				BgColor:     bgColor,
 				FgColor:     fgColor,
 			},
 			Over: MenuBodyStyle{
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{2, 2, 2, 2},
+				Border:      RectBounds{1, 1, 1, 1},
+				Paddings:    RectBounds{2, 2, 2, 2},
 				BorderColor: borderColor,
 				BgColor:     bgColorOver,
 				FgColor:     fgColor,
 			},
 			Focus: MenuBodyStyle{
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{2, 2, 2, 2},
+				Border:      RectBounds{1, 1, 1, 1},
+				Paddings:    RectBounds{2, 2, 2, 2},
 				BorderColor: borderColor,
 				BgColor:     bgColorOver,
 				FgColor:     fgColor,
 			},
 			Disabled: MenuBodyStyle{
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{2, 2, 2, 2},
+				Border:      RectBounds{1, 1, 1, 1},
+				Paddings:    RectBounds{2, 2, 2, 2},
 				BorderColor: borderColor,
 				BgColor:     bgColor,
 				FgColor:     fgColor,
@@ -691,38 +691,38 @@ func NewLightStyle() *Style {
 		},
 		Item: &MenuItemStyles{
 			Normal: MenuItemStyle{
-				Border:           BorderSizes{0, 0, 0, 0},
-				Paddings:         BorderSizes{2, 4, 2, 2},
+				Border:           RectBounds{0, 0, 0, 0},
+				Paddings:         RectBounds{2, 4, 2, 2},
 				BorderColor:      borderColor,
 				BgColor:          bgColor,
 				FgColor:          fgColor,
-				IconPaddings:     BorderSizes{0, 6, 0, 4},
-				ShortcutPaddings: BorderSizes{0, 0, 0, 10},
-				RiconPaddings:    BorderSizes{2, 0, 0, 4},
+				IconPaddings:     RectBounds{0, 6, 0, 4},
+				ShortcutPaddings: RectBounds{0, 0, 0, 10},
+				RiconPaddings:    RectBounds{2, 0, 0, 4},
 			},
 			Over: MenuItemStyle{
-				Border:           BorderSizes{0, 0, 0, 0},
-				Paddings:         BorderSizes{2, 4, 2, 2},
+				Border:           RectBounds{0, 0, 0, 0},
+				Paddings:         RectBounds{2, 4, 2, 2},
 				BorderColor:      borderColor,
 				BgColor:          math32.Color{0.6, 0.6, 0.6},
 				FgColor:          fgColor,
-				IconPaddings:     BorderSizes{0, 6, 0, 4},
-				ShortcutPaddings: BorderSizes{0, 0, 0, 10},
-				RiconPaddings:    BorderSizes{2, 0, 0, 4},
+				IconPaddings:     RectBounds{0, 6, 0, 4},
+				ShortcutPaddings: RectBounds{0, 0, 0, 10},
+				RiconPaddings:    RectBounds{2, 0, 0, 4},
 			},
 			Disabled: MenuItemStyle{
-				Border:           BorderSizes{0, 0, 0, 0},
-				Paddings:         BorderSizes{2, 4, 2, 2},
+				Border:           RectBounds{0, 0, 0, 0},
+				Paddings:         RectBounds{2, 4, 2, 2},
 				BorderColor:      borderColor,
 				BgColor:          bgColor,
 				FgColor:          fgColorDis,
-				IconPaddings:     BorderSizes{0, 6, 0, 4},
-				ShortcutPaddings: BorderSizes{0, 0, 0, 10},
-				RiconPaddings:    BorderSizes{2, 0, 0, 4},
+				IconPaddings:     RectBounds{0, 6, 0, 4},
+				ShortcutPaddings: RectBounds{0, 0, 0, 10},
+				RiconPaddings:    RectBounds{2, 0, 0, 4},
 			},
 			Separator: MenuItemStyle{
-				Border:      BorderSizes{2, 2, 2, 2},
-				Paddings:    BorderSizes{0, 0, 0, 0},
+				Border:      RectBounds{2, 2, 2, 2},
+				Paddings:    RectBounds{0, 0, 0, 0},
 				BorderColor: math32.Color4{0, 0, 0, 0},
 				BgColor:     math32.Color{0.6, 0.6, 0.6},
 				FgColor:     fgColor,
@@ -733,50 +733,50 @@ func NewLightStyle() *Style {
 	// Table styles
 	s.Table = TableStyles{
 		Header: &TableHeaderStyle{
-			Border:      BorderSizes{0, 1, 1, 0},
-			Paddings:    BorderSizes{2, 2, 2, 2},
+			Border:      RectBounds{0, 1, 1, 0},
+			Paddings:    RectBounds{2, 2, 2, 2},
 			BorderColor: borderColor,
 			BgColor:     math32.Color{0.7, 0.7, 0.7},
 			FgColor:     fgColor,
 		},
 		RowEven: &TableRowStyle{
-			Border:      BorderSizes{0, 1, 1, 0},
-			Paddings:    BorderSizes{2, 2, 2, 2},
+			Border:      RectBounds{0, 1, 1, 0},
+			Paddings:    RectBounds{2, 2, 2, 2},
 			BorderColor: math32.Color4{0.6, 0.6, 0.6, 1},
 			BgColor:     math32.Color{0.90, 0.90, 0.90},
 			FgColor:     fgColor,
 		},
 		RowOdd: &TableRowStyle{
-			Border:      BorderSizes{0, 1, 1, 0},
-			Paddings:    BorderSizes{2, 2, 2, 2},
+			Border:      RectBounds{0, 1, 1, 0},
+			Paddings:    RectBounds{2, 2, 2, 2},
 			BorderColor: math32.Color4{0.6, 0.6, 0.6, 1},
 			BgColor:     math32.Color{0.88, 0.88, 0.88},
 			FgColor:     fgColor,
 		},
 		RowCursor: &TableRowStyle{
-			Border:      BorderSizes{0, 1, 1, 0},
-			Paddings:    BorderSizes{2, 2, 2, 2},
+			Border:      RectBounds{0, 1, 1, 0},
+			Paddings:    RectBounds{2, 2, 2, 2},
 			BorderColor: math32.Color4{0.6, 0.6, 0.6, 1},
 			BgColor:     math32.Color{0.75, 0.75, 0.75},
 			FgColor:     fgColor,
 		},
 		RowSel: &TableRowStyle{
-			Border:      BorderSizes{0, 1, 1, 0},
-			Paddings:    BorderSizes{2, 2, 2, 2},
+			Border:      RectBounds{0, 1, 1, 0},
+			Paddings:    RectBounds{2, 2, 2, 2},
 			BorderColor: math32.Color4{0.6, 0.6, 0.6, 1},
 			BgColor:     math32.Color{0.70, 0.70, 0.70},
 			FgColor:     fgColor,
 		},
 		Status: &TableStatusStyle{
-			Border:      BorderSizes{1, 0, 0, 0},
-			Paddings:    BorderSizes{2, 2, 2, 2},
+			Border:      RectBounds{1, 0, 0, 0},
+			Paddings:    RectBounds{2, 2, 2, 2},
 			BorderColor: borderColor,
 			BgColor:     math32.Color{0.9, 0.9, 0.9},
 			FgColor:     fgColor,
 		},
 		Resizer: &TableResizerStyle{
 			Width:       4,
-			Border:      BorderSizes{0, 0, 0, 0},
+			Border:      RectBounds{0, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     math32.Color4{0.4, 0.4, 0.4, 0.6},
 		},
@@ -786,35 +786,35 @@ func NewLightStyle() *Style {
 	s.ImageButton = ImageButtonStyles{
 		Normal: ImageButtonStyle{
 			Border:      borderSizes,
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColor4,
 			FgColor:     fgColor,
 		},
 		Over: ImageButtonStyle{
 			Border:      borderSizes,
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColor4Over,
 			FgColor:     fgColor,
 		},
 		Focus: ImageButtonStyle{
 			Border:      borderSizes,
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColor4Over,
 			FgColor:     fgColor,
 		},
 		Pressed: ImageButtonStyle{
-			Border:      BorderSizes{2, 2, 2, 2},
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Border:      RectBounds{2, 2, 2, 2},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColor4Over,
 			FgColor:     fgColor,
 		},
 		Disabled: ImageButtonStyle{
 			Border:      borderSizes,
-			Paddings:    BorderSizes{0, 0, 0, 0},
+			Paddings:    RectBounds{0, 0, 0, 0},
 			BorderColor: borderColorDis,
 			BgColor:     bgColor4,
 			FgColor:     fgColorDis,
@@ -825,71 +825,71 @@ func NewLightStyle() *Style {
 	s.TabBar = TabBarStyles{
 		SepHeight:          1,
 		ListButtonIcon:     icon.MoreVert,
-		ListButtonPaddings: BorderSizes{2, 4, 0, 0},
+		ListButtonPaddings: RectBounds{2, 4, 0, 0},
 		Normal: TabBarStyle{
 			Border:      borderSizes,
-			Paddings:    BorderSizes{2, 0, 0, 0},
+			Paddings:    RectBounds{2, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     math32.Color4{0.7, 0.7, 0.7, 1},
 		},
 		Over: TabBarStyle{
 			Border:      borderSizes,
-			Paddings:    BorderSizes{2, 0, 0, 0},
+			Paddings:    RectBounds{2, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColor4Over,
 		},
 		Focus: TabBarStyle{
 			Border:      borderSizes,
-			Paddings:    BorderSizes{2, 0, 0, 0},
+			Paddings:    RectBounds{2, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColor4,
 		},
 		Disabled: TabBarStyle{
 			Border:      borderSizes,
-			Paddings:    BorderSizes{2, 0, 0, 0},
+			Paddings:    RectBounds{2, 0, 0, 0},
 			BorderColor: borderColor,
 			BgColor:     bgColor4,
 		},
 		Tab: TabStyles{
-			IconPaddings:  BorderSizes{2, 2, 0, 0},
-			ImagePaddings: BorderSizes{0, 2, 0, 0},
+			IconPaddings:  RectBounds{2, 2, 0, 0},
+			ImagePaddings: RectBounds{0, 2, 0, 0},
 			IconClose:     icon.Clear,
 			Normal: TabStyle{
-				Margins:     BorderSizes{0, 2, 0, 2},
-				Border:      BorderSizes{1, 1, 0, 1},
-				Paddings:    BorderSizes{2, 2, 2, 2},
+				Margins:     RectBounds{0, 2, 0, 2},
+				Border:      RectBounds{1, 1, 0, 1},
+				Paddings:    RectBounds{2, 2, 2, 2},
 				BorderColor: borderColor,
 				BgColor:     bgColor4,
 				FgColor:     fgColor,
 			},
 			Over: TabStyle{
-				Margins:     BorderSizes{0, 2, 0, 2},
-				Border:      BorderSizes{1, 1, 0, 1},
-				Paddings:    BorderSizes{2, 2, 2, 2},
+				Margins:     RectBounds{0, 2, 0, 2},
+				Border:      RectBounds{1, 1, 0, 1},
+				Paddings:    RectBounds{2, 2, 2, 2},
 				BorderColor: borderColor,
 				BgColor:     bgColor4Over,
 				FgColor:     fgColor,
 			},
 			Focus: TabStyle{
-				Margins:     BorderSizes{0, 2, 0, 2},
-				Border:      BorderSizes{1, 1, 0, 1},
-				Paddings:    BorderSizes{2, 2, 2, 2},
+				Margins:     RectBounds{0, 2, 0, 2},
+				Border:      RectBounds{1, 1, 0, 1},
+				Paddings:    RectBounds{2, 2, 2, 2},
 				BorderColor: borderColor,
 				BgColor:     bgColor4,
 				FgColor:     fgColor,
 			},
 			Disabled: TabStyle{
-				Margins:     BorderSizes{0, 2, 0, 2},
-				Border:      BorderSizes{1, 1, 0, 1},
-				Paddings:    BorderSizes{2, 2, 2, 2},
+				Margins:     RectBounds{0, 2, 0, 2},
+				Border:      RectBounds{1, 1, 0, 1},
+				Paddings:    RectBounds{2, 2, 2, 2},
 				BorderColor: borderColor,
 				BgColor:     bgColor4,
 				FgColor:     fgColor,
 			},
 			Selected: TabStyle{
-				Margins:     BorderSizes{0, 2, 0, 2},
-				Border:      BorderSizes{1, 1, 0, 1},
-				Paddings:    BorderSizes{2, 2, 2, 2},
+				Margins:     RectBounds{0, 2, 0, 2},
+				Border:      RectBounds{1, 1, 0, 1},
+				Paddings:    RectBounds{2, 2, 2, 2},
 				BorderColor: borderColor,
 				BgColor:     math32.Color4{0.85, 0.85, 0.85, 1},
 				FgColor:     fgColor,

+ 14 - 14
gui/tabbar.go

@@ -27,8 +27,8 @@ type TabBar struct {
 
 // TabBarStyle describes the style of the TabBar
 type TabBarStyle struct {
-	Border      BorderSizes   // Border sizes
-	Paddings    BorderSizes   // Padding sizes
+	Border      RectBounds    // Border sizes
+	Paddings    RectBounds    // Padding sizes
 	BorderColor math32.Color4 // Border color
 	BgColor     math32.Color4 // Background color
 }
@@ -37,7 +37,7 @@ type TabBarStyle struct {
 type TabBarStyles struct {
 	SepHeight          float32     // Separator width
 	ListButtonIcon     string      // Icon for list button
-	ListButtonPaddings BorderSizes // Paddings for list button
+	ListButtonPaddings RectBounds  // Paddings for list button
 	Normal             TabBarStyle // Style for normal exhibition
 	Over               TabBarStyle // Style when cursor is over the TabBar
 	Focus              TabBarStyle // Style when the TabBar has key focus
@@ -47,9 +47,9 @@ type TabBarStyles struct {
 
 // TabStyle describes the style of the individual Tabs header
 type TabStyle struct {
-	Margins     BorderSizes   // Tab header margins
-	Border      BorderSizes   // Tab header borders
-	Paddings    BorderSizes   // Tab header paddings
+	Margins     RectBounds    // Tab header margins
+	Border      RectBounds    // Tab header borders
+	Paddings    RectBounds    // Tab header paddings
 	BorderColor math32.Color4 // Tab header border color
 	BgColor     math32.Color4 // Tab header background color
 	FgColor     math32.Color  // Tab header color for icon and text
@@ -57,14 +57,14 @@ type TabStyle struct {
 
 // TabStyles describes all Tab styles
 type TabStyles struct {
-	IconPaddings  BorderSizes // Paddings for optional icon
-	ImagePaddings BorderSizes // Paddings for optional image
-	IconClose     string      // Codepoint for close icon in Tab header
-	Normal        TabStyle    // Style for normal exhibition
-	Over          TabStyle    // Style when cursor is over the Tab
-	Focus         TabStyle    // Style when the Tab has key focus
-	Disabled      TabStyle    // Style when the Tab is disabled
-	Selected      TabStyle    // Style when the Tab is selected
+	IconPaddings  RectBounds // Paddings for optional icon
+	ImagePaddings RectBounds // Paddings for optional image
+	IconClose     string     // Codepoint for close icon in Tab header
+	Normal        TabStyle   // Style for normal exhibition
+	Over          TabStyle   // Style when cursor is over the Tab
+	Focus         TabStyle   // Style when the Tab has key focus
+	Disabled      TabStyle   // Style when the Tab is disabled
+	Selected      TabStyle   // Style when the Tab is selected
 }
 
 // NewTabBar creates and returns a pointer to a new TabBar widget

+ 7 - 7
gui/table.go

@@ -107,8 +107,8 @@ type TableFormatFunc func(cell TableCell) string
 
 // TableHeaderStyle describes the style of the table header
 type TableHeaderStyle struct {
-	Border      BorderSizes
-	Paddings    BorderSizes
+	Border      RectBounds
+	Paddings    RectBounds
 	BorderColor math32.Color4
 	BgColor     math32.Color
 	FgColor     math32.Color
@@ -116,8 +116,8 @@ type TableHeaderStyle struct {
 
 // TableRowStyle describes the style of the table row
 type TableRowStyle struct {
-	Border      BorderSizes
-	Paddings    BorderSizes
+	Border      RectBounds
+	Paddings    RectBounds
 	BorderColor math32.Color4
 	BgColor     math32.Color
 	FgColor     math32.Color
@@ -131,8 +131,8 @@ type TableRowStyles struct {
 
 // TableStatusStyle describes the style of the table status line panel
 type TableStatusStyle struct {
-	Border      BorderSizes
-	Paddings    BorderSizes
+	Border      RectBounds
+	Paddings    RectBounds
 	BorderColor math32.Color4
 	BgColor     math32.Color
 	FgColor     math32.Color
@@ -141,7 +141,7 @@ type TableStatusStyle struct {
 // TableResizerStyle describes the style of the table resizer panel
 type TableResizerStyle struct {
 	Width       float32
-	Border      BorderSizes
+	Border      RectBounds
 	BorderColor math32.Color4
 	BgColor     math32.Color4
 }

+ 3 - 3
gui/tree.go

@@ -25,9 +25,9 @@ type TreeNodeStyles struct {
 }
 
 type TreeNodeStyle struct {
-	Margins     BorderSizes
-	Border      BorderSizes
-	Paddings    BorderSizes
+	Margins     RectBounds
+	Border      RectBounds
+	Paddings    RectBounds
 	BorderColor math32.Color4
 	BgColor     math32.Color4
 	FgColor     math32.Color

+ 2 - 2
gui/util.go

@@ -4,14 +4,14 @@
 
 package gui
 
-type BorderSizes struct {
+type RectBounds struct {
 	Top    float32
 	Right  float32
 	Bottom float32
 	Left   float32
 }
 
-func (bs *BorderSizes) Set(top, right, bottom, left float32) {
+func (bs *RectBounds) Set(top, right, bottom, left float32) {
 
 	if top >= 0 {
 		bs.Top = top

+ 3 - 3
gui/window.go

@@ -42,10 +42,10 @@ type Window struct {
 }
 
 type WindowStyle struct {
-	Border           BorderSizes
-	Paddings         BorderSizes
+	Border           RectBounds
+	Paddings         RectBounds
 	BorderColor      math32.Color4
-	TitleBorders     BorderSizes
+	TitleBorders     RectBounds
 	TitleBorderColor math32.Color4
 	TitleBgColor     math32.Color4
 	TitleFgColor     math32.Color4