Ver código fonte

refactored gui style files

leonsal 8 anos atrás
pai
commit
24d012247b
21 arquivos alterados com 870 adições e 848 exclusões
  1. 1 1
      gui/button.go
  2. 1 1
      gui/checkradio.go
  3. 1 1
      gui/control_folder.go
  4. 5 5
      gui/dropdown.go
  5. 2 2
      gui/edit.go
  6. 3 3
      gui/folder.go
  7. 9 9
      gui/image_button.go
  8. 1 1
      gui/imagelabel.go
  9. 2 2
      gui/label.go
  10. 1 1
      gui/list.go
  11. 1 1
      gui/menu.go
  12. 1 1
      gui/scrollbar.go
  13. 5 5
      gui/scroller.go
  14. 1 1
      gui/slider.go
  15. 1 1
      gui/splitter.go
  16. 5 806
      gui/style.go
  17. 25 0
      gui/style_default.go
  18. 798 0
      gui/style_light.go
  19. 2 2
      gui/table.go
  20. 3 3
      gui/tree.go
  21. 2 2
      gui/window.go

+ 1 - 1
gui/button.go

@@ -55,7 +55,7 @@ type ButtonStyles struct {
 func NewButton(text string) *Button {
 
 	b := new(Button)
-	b.styles = &StyleDefault.Button
+	b.styles = &StyleDefault().Button
 
 	// Initializes the button panel
 	b.Panel = NewPanel(0, 0)

+ 1 - 1
gui/checkradio.go

@@ -65,7 +65,7 @@ func NewRadioButton(text string) *CheckRadio {
 func newCheckRadio(check bool, text string) *CheckRadio {
 
 	cb := new(CheckRadio)
-	cb.styles = &StyleDefault.CheckRadio
+	cb.styles = &StyleDefault().CheckRadio
 
 	// Adapts to specified type: CheckBox or RadioButton
 	cb.check = check

+ 1 - 1
gui/control_folder.go

@@ -37,7 +37,7 @@ func NewControlFolder(text string, width float32) *ControlFolder {
 // It is normally used when the control folder is embedded in another object
 func (f *ControlFolder) Initialize(text string, width float32) {
 
-	f.styles = &StyleDefault.ControlFolder
+	f.styles = &StyleDefault().ControlFolder
 	f.tree.Initialize(width, width)
 	f.tree.SetStyles(f.styles.Tree)
 	f.tree.SetAutoHeight(600)

+ 5 - 5
gui/dropdown.go

@@ -44,7 +44,7 @@ type DropDownStyles struct {
 func NewDropDown(width float32, item *ImageLabel) *DropDown {
 
 	dd := new(DropDown)
-	dd.styles = &StyleDefault.DropDown
+	dd.styles = &StyleDefault().DropDown
 	dd.litem = item
 
 	dd.Panel.Initialize(width, 0)
@@ -59,7 +59,7 @@ func NewDropDown(width float32, item *ImageLabel) *DropDown {
 
 	// Create icon
 	dd.icon = NewIconLabel(" ")
-	dd.icon.SetFontSize(StyleDefault.Font.Size() * 1.3)
+	dd.icon.SetFontSize(StyleDefault().Font.Size() * 1.3)
 	dd.icon.SetText(string(icon.ArrowDropDown))
 	dd.Panel.Add(dd.icon)
 
@@ -259,16 +259,16 @@ func (dd *DropDown) update() {
 
 	if dd.overDropdown || dd.overList {
 		dd.applyStyle(dd.styles.Over)
-		dd.list.ApplyStyle(OverStyle)
+		dd.list.ApplyStyle(StyleOver)
 		return
 	}
 	if dd.focus {
 		dd.applyStyle(dd.styles.Focus)
-		dd.list.ApplyStyle(FocusStyle)
+		dd.list.ApplyStyle(StyleFocus)
 		return
 	}
 	dd.applyStyle(dd.styles.Normal)
-	dd.list.ApplyStyle(NormalStyle)
+	dd.list.ApplyStyle(StyleNormal)
 }
 
 // applyStyle applies the specified style

+ 2 - 2
gui/edit.go

@@ -55,13 +55,13 @@ func NewEdit(width int, placeHolder string) *Edit {
 	ed.width = width
 	ed.placeHolder = placeHolder
 
-	ed.styles = &StyleDefault.Edit
+	ed.styles = &StyleDefault().Edit
 	ed.text = ""
 	ed.MaxLength = 80
 	ed.col = 0
 	ed.focus = false
 
-	ed.Label.initialize("", StyleDefault.Font)
+	ed.Label.initialize("", StyleDefault().Font)
 	ed.Label.Subscribe(OnKeyDown, ed.onKey)
 	ed.Label.Subscribe(OnKeyRepeat, ed.onKey)
 	ed.Label.Subscribe(OnChar, ed.onChar)

+ 3 - 3
gui/folder.go

@@ -49,14 +49,14 @@ func NewFolder(text string, width float32, contentPanel IPanel) *Folder {
 func (f *Folder) Initialize(text string, width float32, contentPanel IPanel) {
 
 	f.Panel.Initialize(width, 0)
-	f.styles = &StyleDefault.Folder
+	f.styles = &StyleDefault().Folder
 
 	// Initialize label
-	f.label.initialize(text, StyleDefault.Font)
+	f.label.initialize(text, StyleDefault().Font)
 	f.Panel.Add(&f.label)
 
 	// Create icon
-	f.icon.initialize("", StyleDefault.FontIcon)
+	f.icon.initialize("", StyleDefault().FontIcon)
 	f.icon.SetFontSize(f.label.FontSize() * 1.3)
 	f.Panel.Add(&f.icon)
 

+ 9 - 9
gui/image_button.go

@@ -11,14 +11,14 @@ import (
 )
 
 type ImageButton struct {
-	*Panel                            // Embedded Panel
-	label       *Label                // Label panel
-	iconLabel   bool                  // True if icon
-	image       *Image                // pointer to button image (may be nil)
-	styles      *ImageButtonStyles    // pointer to current button styles
-	mouseOver   bool                  // true if mouse is over button
-	pressed     bool                  // true if button is pressed
-	stateImages [ButtonDisabled+1]*texture.Texture2D // array of images for each button state
+	*Panel                                             // Embedded Panel
+	label       *Label                                 // Label panel
+	iconLabel   bool                                   // True if icon
+	image       *Image                                 // pointer to button image (may be nil)
+	styles      *ImageButtonStyles                     // pointer to current button styles
+	mouseOver   bool                                   // true if mouse is over button
+	pressed     bool                                   // true if button is pressed
+	stateImages [ButtonDisabled + 1]*texture.Texture2D // array of images for each button state
 }
 
 type ButtonState int
@@ -54,7 +54,7 @@ type ImageButtonStyles struct {
 func NewImageButton(normalImgPath string) (*ImageButton, error) {
 
 	b := new(ImageButton)
-	b.styles = &StyleDefault.ImageButton
+	b.styles = &StyleDefault().ImageButton
 
 	tex, err := texture.NewTexture2DFromImage(normalImgPath)
 	if err != nil {

+ 1 - 1
gui/imagelabel.go

@@ -49,7 +49,7 @@ func NewImageLabel(text string) *ImageLabel {
 	il.Panel.Subscribe(OnResize, func(evname string, ev interface{}) { il.recalc() })
 
 	// Initializes the label
-	il.label.initialize(text, StyleDefault.Font)
+	il.label.initialize(text, StyleDefault().Font)
 	il.label.Subscribe(OnResize, func(evname string, ev interface{}) { il.recalc() })
 	il.Panel.Add(&il.label)
 

+ 2 - 2
gui/label.go

@@ -28,7 +28,7 @@ type Label struct {
 func NewLabel(msg string) *Label {
 
 	l := new(Label)
-	l.initialize(msg, StyleDefault.Font)
+	l.initialize(msg, StyleDefault().Font)
 	return l
 }
 
@@ -37,7 +37,7 @@ func NewLabel(msg string) *Label {
 func NewIconLabel(msg string) *Label {
 
 	l := new(Label)
-	l.initialize(msg, StyleDefault.FontIcon)
+	l.initialize(msg, StyleDefault().FontIcon)
 	return l
 }
 

+ 1 - 1
gui/list.go

@@ -79,7 +79,7 @@ func newList(vert bool, width, height float32) *List {
 
 func (li *List) initialize(vert bool, width, height float32) {
 
-	li.styles = &StyleDefault.List
+	li.styles = &StyleDefault().List
 	li.single = true
 
 	li.Scroller.initialize(vert, width, height)

+ 1 - 1
gui/menu.go

@@ -158,7 +158,7 @@ func NewMenu() *Menu {
 
 	m := new(Menu)
 	m.Panel.Initialize(0, 0)
-	m.styles = &StyleDefault.Menu
+	m.styles = &StyleDefault().Menu
 	m.items = make([]*MenuItem, 0)
 	m.Panel.Subscribe(OnCursorEnter, m.onCursor)
 	m.Panel.Subscribe(OnCursor, m.onCursor)

+ 1 - 1
gui/scrollbar.go

@@ -78,7 +78,7 @@ func newScrollBar(width, height float32, vertical bool) *ScrollBar {
 // initialize initializes this scrollbar
 func (sb *ScrollBar) initialize(width, height float32, vertical bool) {
 
-	sb.style = &StyleDefault.ScrollBar
+	sb.style = &StyleDefault().ScrollBar
 	sb.vertical = vertical
 	sb.Panel.Initialize(width, height)
 	sb.Panel.Subscribe(OnMouseDown, sb.onMouse)

+ 5 - 5
gui/scroller.go

@@ -258,13 +258,13 @@ func (s *Scroller) SetStyles(ss *ScrollerStyles) {
 func (s *Scroller) ApplyStyle(style int) {
 
 	switch style {
-	case OverStyle:
+	case StyleOver:
 		s.applyStyle(&s.styles.Over)
-	case FocusStyle:
+	case StyleFocus:
 		s.applyStyle(&s.styles.Focus)
-	case NormalStyle:
+	case StyleNormal:
 		s.applyStyle(&s.styles.Normal)
-	case DefaultStyle:
+	case StyleDef:
 		s.update()
 	}
 }
@@ -284,7 +284,7 @@ func (s *Scroller) initialize(vert bool, width, height float32) {
 
 	s.vert = vert
 	s.Panel.Initialize(width, height)
-	s.styles = &StyleDefault.Scroller
+	s.styles = &StyleDefault().Scroller
 
 	s.Panel.Subscribe(OnCursorEnter, s.onCursor)
 	s.Panel.Subscribe(OnCursorLeave, s.onCursor)

+ 1 - 1
gui/slider.go

@@ -73,7 +73,7 @@ func newSlider(horiz bool, width, height float32) *Slider {
 
 	s := new(Slider)
 	s.horiz = horiz
-	s.styles = &StyleDefault.Slider
+	s.styles = &StyleDefault().Slider
 	s.scaleFactor = 1.0
 
 	// Initialize main panel

+ 1 - 1
gui/splitter.go

@@ -54,7 +54,7 @@ func newSplitter(horiz bool, width, height float32) *Splitter {
 
 	s := new(Splitter)
 	s.horiz = horiz
-	s.styles = &StyleDefault.Splitter
+	s.styles = &StyleDefault().Splitter
 	s.Panel.Initialize(width, height)
 
 	// Initialize left/top panel

+ 5 - 806
gui/style.go

@@ -5,20 +5,9 @@
 package gui
 
 import (
-	"github.com/g3n/engine/gui/assets"
-	"github.com/g3n/engine/gui/assets/icon"
-	"github.com/g3n/engine/math32"
 	"github.com/g3n/engine/text"
 )
 
-func init() {
-
-	setupDefaultStyle()
-}
-
-// Pointer to default style
-var StyleDefault *Style
-
 // All styles
 type Style struct {
 	Font          *text.Font
@@ -42,799 +31,9 @@ type Style struct {
 }
 
 const (
-	defaultFont     = "fonts/FreeSans.ttf"
-	defaultFontBold = "fonts/FreeSansBold.ttf"
-	defaultFontIcon = "fonts/MaterialIcons-Regular.ttf"
+	StyleOver = iota + 1
+	StyleFocus
+	StyleDisabled
+	StyleNormal
+	StyleDef
 )
-
-const (
-	OverStyle = iota + 1
-	FocusStyle
-	DisabledStyle
-	NormalStyle
-	DefaultStyle
-)
-
-// setupDefaultStyle initializes the default Gui global styles
-func setupDefaultStyle() {
-
-	StyleDefault = &Style{}
-
-	// Creates Default Font
-	fontData := assets.MustAsset(defaultFont)
-	font, err := text.NewFontFromData(fontData)
-	if err != nil {
-		panic(err)
-	}
-	font.SetLineSpacing(1.0)
-	font.SetSize(14)
-	font.SetDPI(72)
-	font.SetFgColor4(&math32.Color4{0, 0, 0, 1})
-	font.SetBgColor4(&math32.Color4{1, 1, 1, 0})
-	StyleDefault.Font = font
-
-	// Creates Icon Font
-	fontIconData := assets.MustAsset(defaultFontIcon)
-	fontIcon, err := text.NewFontFromData(fontIconData)
-	if err != nil {
-		panic(err)
-	}
-	fontIcon.SetLineSpacing(1.0)
-	fontIcon.SetSize(14)
-	fontIcon.SetDPI(72)
-	fontIcon.SetFgColor4(&math32.Color4{0, 0, 0, 1})
-	fontIcon.SetBgColor4(&math32.Color4{1, 1, 1, 1})
-	StyleDefault.FontIcon = fontIcon
-
-	borderSizes := BorderSizes{1, 1, 1, 1}
-	borderColor := math32.Color4{0, 0, 0, 1}
-	borderColorDis := math32.Color4{0.4, 0.4, 0.4, 1}
-
-	bgColor := math32.Color{0.85, 0.85, 0.85}
-	bgColor4 := math32.Color4{0, 0, 0, 0}
-	bgColorOver := math32.Color{0.9, 0.9, 0.9}
-	bgColor4Over := math32.Color4{1, 1, 1, 0.5}
-	bgColor4Sel := math32.Color4{0.6, 0.6, 0.6, 1}
-
-	fgColor := math32.Color{0, 0, 0}
-	fgColorSel := math32.Color{0, 0, 0}
-	fgColorDis := math32.Color{0.4, 0.4, 0.4}
-
-	// Button styles
-	StyleDefault.Button = ButtonStyles{
-		Normal: ButtonStyle{
-			Border:      borderSizes,
-			Paddings:    BorderSizes{2, 4, 2, 4},
-			BorderColor: borderColor,
-			BgColor:     bgColor,
-			FgColor:     fgColor,
-		},
-		Over: ButtonStyle{
-			Border:      borderSizes,
-			Paddings:    BorderSizes{2, 4, 2, 4},
-			BorderColor: borderColor,
-			BgColor:     bgColorOver,
-			FgColor:     fgColor,
-		},
-		Focus: ButtonStyle{
-			Border:      borderSizes,
-			Paddings:    BorderSizes{2, 4, 2, 4},
-			BorderColor: borderColor,
-			BgColor:     bgColorOver,
-			FgColor:     fgColor,
-		},
-		Pressed: ButtonStyle{
-			Border:      BorderSizes{2, 2, 2, 2},
-			Paddings:    BorderSizes{2, 4, 2, 4},
-			BorderColor: borderColor,
-			BgColor:     bgColorOver,
-			FgColor:     fgColor,
-		},
-		Disabled: ButtonStyle{
-			Border:      borderSizes,
-			Paddings:    BorderSizes{2, 4, 2, 4},
-			BorderColor: borderColorDis,
-			BgColor:     bgColor,
-			FgColor:     fgColorDis,
-		},
-	}
-
-	// CheckRadio styles
-	StyleDefault.CheckRadio = CheckRadioStyles{
-		Normal: CheckRadioStyle{
-			Border:      BorderSizes{0, 0, 0, 0},
-			Paddings:    BorderSizes{0, 0, 0, 0},
-			BorderColor: borderColor,
-			BgColor:     bgColor4,
-			FgColor:     fgColor,
-		},
-		Over: CheckRadioStyle{
-			Border:      BorderSizes{0, 0, 0, 0},
-			Paddings:    BorderSizes{0, 0, 0, 0},
-			BorderColor: borderColor,
-			BgColor:     bgColor4Over,
-			FgColor:     fgColor,
-		},
-		Focus: CheckRadioStyle{
-			Border:      BorderSizes{0, 0, 0, 0},
-			Paddings:    BorderSizes{0, 0, 0, 0},
-			BorderColor: borderColor,
-			BgColor:     bgColor4Over,
-			FgColor:     fgColor,
-		},
-		Disabled: CheckRadioStyle{
-			Border:      BorderSizes{0, 0, 0, 0},
-			Paddings:    BorderSizes{0, 0, 0, 0},
-			BorderColor: borderColor,
-			BgColor:     bgColor4,
-			FgColor:     fgColorDis,
-		},
-	}
-
-	// Edit styles
-	StyleDefault.Edit = EditStyles{
-		Normal: EditStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 0},
-			BorderColor: borderColor,
-			BgColor:     bgColor,
-			BgAlpha:     1.0,
-			FgColor:     fgColor,
-			HolderColor: math32.Color{0.4, 0.4, 0.4},
-		},
-		Over: EditStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 0},
-			BorderColor: borderColor,
-			BgColor:     bgColorOver,
-			BgAlpha:     1.0,
-			FgColor:     fgColor,
-			HolderColor: math32.Color{0.4, 0.4, 0.4},
-		},
-		Focus: EditStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 0},
-			BorderColor: borderColor,
-			BgColor:     bgColorOver,
-			BgAlpha:     1.0,
-			FgColor:     fgColor,
-			HolderColor: math32.Color{0.4, 0.4, 0.4},
-		},
-		Disabled: EditStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 0},
-			BorderColor: borderColor,
-			BgColor:     bgColor,
-			BgAlpha:     1.0,
-			FgColor:     fgColorDis,
-			HolderColor: math32.Color{0.4, 0.4, 0.4},
-		},
-	}
-
-	// ScrollBar style
-	StyleDefault.ScrollBar = ScrollBarStyle{
-		Paddings:     BorderSizes{1, 1, 1, 1},
-		Borders:      BorderSizes{1, 1, 1, 1},
-		BordersColor: borderColor,
-		Color:        math32.Color{0.8, 0.8, 0.8},
-		Button: ScrollBarButtonStyle{
-			Borders:      BorderSizes{1, 1, 1, 1},
-			BordersColor: borderColor,
-			Color:        math32.Color{0.5, 0.5, 0.5},
-			Size:         30,
-		},
-	}
-
-	// Slider styles
-	StyleDefault.Slider = SliderStyles{
-		Normal: SliderStyle{
-			Border:      borderSizes,
-			BorderColor: borderColor,
-			Paddings:    BorderSizes{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},
-			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},
-			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},
-			BgColor:     math32.Color4{0.8, 0.8, 0.8, 1},
-			FgColor:     math32.Color4{0, 0.8, 0, 1},
-		},
-	}
-
-	// Splitter styles
-	StyleDefault.Splitter = SplitterStyles{
-		Normal: SplitterStyle{
-			SpacerBorderColor: borderColor,
-			SpacerColor:       bgColor,
-			SpacerSize:        6,
-		},
-		Over: SplitterStyle{
-			SpacerBorderColor: borderColor,
-			SpacerColor:       bgColorOver,
-			SpacerSize:        6,
-		},
-		Drag: SplitterStyle{
-			SpacerBorderColor: borderColor,
-			SpacerColor:       bgColorOver,
-			SpacerSize:        6,
-		},
-	}
-
-	StyleDefault.Window = WindowStyles{
-		Normal: WindowStyle{
-			Border:           BorderSizes{4, 4, 4, 4},
-			Paddings:         BorderSizes{0, 0, 0, 0},
-			BorderColor:      math32.Color4{0.2, 0.2, 0.2, 1},
-			TitleBorders:     BorderSizes{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},
-			BorderColor:      math32.Color4{0.2, 0.2, 0.2, 1},
-			TitleBorders:     BorderSizes{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},
-			BorderColor:      math32.Color4{0.2, 0.2, 0.2, 1},
-			TitleBorders:     BorderSizes{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},
-			BorderColor:      math32.Color4{0.2, 0.2, 0.2, 1},
-			TitleBorders:     BorderSizes{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},
-		},
-	}
-
-	// Scroller styles
-	StyleDefault.Scroller = ScrollerStyles{
-		Normal: ScrollerStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 0},
-			BorderColor: borderColor,
-			BgColor:     bgColor,
-			FgColor:     fgColor,
-		},
-		Over: ScrollerStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 0},
-			BorderColor: borderColor,
-			BgColor:     bgColorOver,
-			FgColor:     fgColor,
-		},
-		Focus: ScrollerStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 0},
-			BorderColor: borderColor,
-			BgColor:     bgColorOver,
-			FgColor:     fgColor,
-		},
-		Disabled: ScrollerStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 0},
-			BorderColor: borderColor,
-			BgColor:     bgColor,
-			FgColor:     fgColor,
-		},
-	}
-
-	// List styles
-	StyleDefault.List = ListStyles{
-		Scroller: &ScrollerStyles{
-			Normal: ScrollerStyle{
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{0, 0, 0, 0},
-				BorderColor: borderColor,
-				BgColor:     bgColor,
-				FgColor:     fgColor,
-			},
-			Over: ScrollerStyle{
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{0, 0, 0, 0},
-				BorderColor: borderColor,
-				BgColor:     bgColorOver,
-				FgColor:     fgColor,
-			},
-			Focus: ScrollerStyle{
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{0, 0, 0, 0},
-				BorderColor: borderColor,
-				BgColor:     bgColorOver,
-				FgColor:     fgColor,
-			},
-			Disabled: ScrollerStyle{
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{0, 0, 0, 0},
-				BorderColor: borderColor,
-				BgColor:     bgColor,
-				FgColor:     fgColor,
-			},
-		},
-		Item: &ListItemStyles{
-			Normal: ListItemStyle{
-				Border:      BorderSizes{1, 0, 1, 0},
-				Paddings:    BorderSizes{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},
-				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},
-				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},
-				BorderColor: math32.Color4{0, 0, 0, 1},
-				BgColor:     bgColor4Sel,
-				FgColor:     fgColorSel,
-			},
-		},
-	}
-
-	StyleDefault.DropDown = DropDownStyles{
-		Normal: &DropDownStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 2},
-			BorderColor: borderColor,
-			BgColor:     bgColor,
-			FgColor:     fgColor,
-		},
-		Over: &DropDownStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 2},
-			BorderColor: borderColor,
-			BgColor:     bgColorOver,
-			FgColor:     fgColor,
-		},
-		Focus: &DropDownStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 2},
-			BorderColor: borderColor,
-			BgColor:     bgColorOver,
-			FgColor:     fgColor,
-		},
-		Disabled: &DropDownStyle{
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{0, 0, 0, 2},
-			BorderColor: borderColor,
-			BgColor:     bgColor,
-			FgColor:     fgColor,
-		},
-	}
-
-	StyleDefault.Folder = FolderStyles{
-		Normal: &FolderStyle{
-			Margins:     BorderSizes{0, 0, 0, 0},
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{2, 0, 2, 2},
-			BorderColor: borderColor,
-			BgColor:     bgColor,
-			FgColor:     fgColor,
-			Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
-		},
-		Over: &FolderStyle{
-			Margins:     BorderSizes{0, 0, 0, 0},
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{2, 0, 2, 2},
-			BorderColor: borderColor,
-			BgColor:     bgColorOver,
-			FgColor:     fgColor,
-			Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
-		},
-		Focus: &FolderStyle{
-			Margins:     BorderSizes{0, 0, 0, 0},
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{2, 2, 2, 2},
-			BorderColor: borderColor,
-			BgColor:     bgColorOver,
-			FgColor:     fgColor,
-			Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
-		},
-		Disabled: &FolderStyle{
-			Margins:     BorderSizes{0, 0, 0, 0},
-			Border:      BorderSizes{1, 1, 1, 1},
-			Paddings:    BorderSizes{2, 2, 2, 2},
-			BorderColor: borderColor,
-			BgColor:     bgColorOver,
-			FgColor:     fgColor,
-			Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
-		},
-	}
-
-	StyleDefault.Tree = TreeStyles{
-		List: &ListStyles{
-			Scroller: &ScrollerStyles{
-				Normal: ScrollerStyle{
-					Border:      BorderSizes{1, 1, 1, 1},
-					Paddings:    BorderSizes{0, 0, 0, 0},
-					BorderColor: borderColor,
-					BgColor:     bgColor,
-					FgColor:     fgColor,
-				},
-				Over: ScrollerStyle{
-					Border:      BorderSizes{1, 1, 1, 1},
-					Paddings:    BorderSizes{0, 0, 0, 0},
-					BorderColor: borderColor,
-					BgColor:     bgColorOver,
-					FgColor:     fgColor,
-				},
-				Focus: ScrollerStyle{
-					Border:      BorderSizes{1, 1, 1, 1},
-					Paddings:    BorderSizes{0, 0, 0, 0},
-					BorderColor: borderColor,
-					BgColor:     bgColorOver,
-					FgColor:     fgColor,
-				},
-				Disabled: ScrollerStyle{
-					Border:      BorderSizes{1, 1, 1, 1},
-					Paddings:    BorderSizes{0, 0, 0, 0},
-					BorderColor: borderColor,
-					BgColor:     bgColor,
-					FgColor:     fgColor,
-				},
-			},
-			Item: &ListItemStyles{
-				Normal: ListItemStyle{
-					Border:      BorderSizes{1, 0, 1, 0},
-					Paddings:    BorderSizes{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},
-					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},
-					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},
-					BorderColor: math32.Color4{0, 0, 0, 1},
-					BgColor:     bgColor4Sel,
-					FgColor:     fgColorSel,
-				},
-			},
-		},
-		Node: &TreeNodeStyles{
-			Normal: TreeNodeStyle{
-				Border:      BorderSizes{0, 0, 0, 0},
-				Paddings:    BorderSizes{0, 0, 0, 0},
-				BorderColor: borderColor,
-				BgColor:     bgColor4,
-				FgColor:     fgColor,
-				Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
-			},
-		},
-		Padlevel: 16.0,
-	}
-
-	StyleDefault.ControlFolder = ControlFolderStyles{
-		Folder: &FolderStyles{
-			Normal: &FolderStyle{
-				Margins:     BorderSizes{0, 0, 0, 0},
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{2, 0, 2, 2},
-				BorderColor: math32.Color4{0, 0, 0, 0},
-				BgColor:     math32.Color{0, 0.5, 1},
-				FgColor:     fgColor,
-				Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
-			},
-			Over: &FolderStyle{
-				Margins:     BorderSizes{0, 0, 0, 0},
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{2, 0, 2, 2},
-				BorderColor: math32.Color4{0, 0, 0, 0},
-				BgColor:     math32.Color{0, 0.5, 1},
-				FgColor:     fgColor,
-				Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
-			},
-			Focus: &FolderStyle{
-				Margins:     BorderSizes{0, 0, 0, 0},
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{2, 2, 2, 2},
-				BorderColor: math32.Color4{0, 0, 0, 0},
-				BgColor:     math32.Color{0, 0.5, 1},
-				FgColor:     fgColor,
-				Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
-			},
-			Disabled: &FolderStyle{
-				Margins:     BorderSizes{0, 0, 0, 0},
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{2, 2, 2, 2},
-				BorderColor: math32.Color4{0, 0, 0, 0},
-				BgColor:     math32.Color{0, 0.5, 1},
-				FgColor:     fgColor,
-				Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
-			},
-		},
-		Tree: &TreeStyles{
-			List: &ListStyles{
-				Scroller: &ScrollerStyles{
-					Normal: ScrollerStyle{
-						Border:      BorderSizes{1, 1, 1, 1},
-						Paddings:    BorderSizes{0, 2, 0, 0},
-						BorderColor: borderColor,
-						BgColor:     bgColor,
-						FgColor:     fgColor,
-					},
-					Over: ScrollerStyle{
-						Border:      BorderSizes{1, 1, 1, 1},
-						Paddings:    BorderSizes{0, 2, 0, 0},
-						BorderColor: borderColor,
-						BgColor:     bgColorOver,
-						FgColor:     fgColor,
-					},
-					Focus: ScrollerStyle{
-						Border:      BorderSizes{1, 1, 1, 1},
-						Paddings:    BorderSizes{0, 2, 0, 0},
-						BorderColor: borderColor,
-						BgColor:     bgColorOver,
-						FgColor:     fgColor,
-					},
-					Disabled: ScrollerStyle{
-						Border:      BorderSizes{1, 1, 1, 1},
-						Paddings:    BorderSizes{0, 2, 0, 0},
-						BorderColor: borderColor,
-						BgColor:     bgColor,
-						FgColor:     fgColor,
-					},
-				},
-				Item: &ListItemStyles{
-					Normal: ListItemStyle{
-						Border:      BorderSizes{1, 0, 1, 0},
-						Paddings:    BorderSizes{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},
-						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},
-						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},
-						BorderColor: math32.Color4{0, 0, 0, 1},
-						BgColor:     bgColor4Sel,
-						FgColor:     fgColorSel,
-					},
-				},
-			},
-			Node: &TreeNodeStyles{
-				Normal: TreeNodeStyle{
-					Border:      BorderSizes{0, 0, 0, 0},
-					Paddings:    BorderSizes{0, 0, 0, 0},
-					BorderColor: borderColor,
-					BgColor:     bgColor4,
-					FgColor:     fgColor,
-					Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
-				},
-			},
-			Padlevel: 2.0,
-		},
-	}
-
-	// Menu styles
-	StyleDefault.Menu = MenuStyles{
-		Body: &MenuBodyStyles{
-			Normal: MenuBodyStyle{
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{2, 2, 2, 2},
-				BorderColor: borderColor,
-				BgColor:     bgColor,
-				FgColor:     fgColor,
-			},
-			Over: MenuBodyStyle{
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{2, 2, 2, 2},
-				BorderColor: borderColor,
-				BgColor:     bgColorOver,
-				FgColor:     fgColor,
-			},
-			Focus: MenuBodyStyle{
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{2, 2, 2, 2},
-				BorderColor: borderColor,
-				BgColor:     bgColorOver,
-				FgColor:     fgColor,
-			},
-			Disabled: MenuBodyStyle{
-				Border:      BorderSizes{1, 1, 1, 1},
-				Paddings:    BorderSizes{2, 2, 2, 2},
-				BorderColor: borderColor,
-				BgColor:     bgColor,
-				FgColor:     fgColor,
-			},
-		},
-		Item: &MenuItemStyles{
-			Normal: MenuItemStyle{
-				Border:           BorderSizes{0, 0, 0, 0},
-				Paddings:         BorderSizes{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},
-			},
-			Over: MenuItemStyle{
-				Border:           BorderSizes{0, 0, 0, 0},
-				Paddings:         BorderSizes{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},
-			},
-			Disabled: MenuItemStyle{
-				Border:           BorderSizes{0, 0, 0, 0},
-				Paddings:         BorderSizes{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},
-			},
-			Separator: MenuItemStyle{
-				Border:      BorderSizes{2, 2, 2, 2},
-				Paddings:    BorderSizes{0, 0, 0, 0},
-				BorderColor: math32.Color4{0, 0, 0, 0},
-				BgColor:     math32.Color{0.6, 0.6, 0.6},
-				FgColor:     fgColor,
-			},
-		},
-	}
-
-	// Table styles
-	StyleDefault.Table = TableStyles{
-		Header: &TableHeaderStyle{
-			Border:      BorderSizes{0, 1, 1, 0},
-			Paddings:    BorderSizes{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},
-			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},
-			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},
-			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},
-			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},
-			BorderColor: borderColor,
-			BgColor:     math32.Color{0.9, 0.9, 0.9},
-			FgColor:     fgColor,
-		},
-		Resizer: &TableResizerStyle{
-			Width:       4,
-			Border:      BorderSizes{0, 0, 0, 0},
-			BorderColor: borderColor,
-			BgColor:     math32.Color4{0.4, 0.4, 0.4, 0.6},
-		},
-	}
-
-	// Button styles
-	StyleDefault.ImageButton = ImageButtonStyles{
-		Normal: ImageButtonStyle{
-			Border:      borderSizes,
-			Paddings:    BorderSizes{0, 0, 0, 0},
-			BorderColor: borderColor,
-			BgColor:     bgColor4,
-			FgColor:     fgColor,
-		},
-		Over: ImageButtonStyle{
-			Border:      borderSizes,
-			Paddings:    BorderSizes{0, 0, 0, 0},
-			BorderColor: borderColor,
-			BgColor:     bgColor4Over,
-			FgColor:     fgColor,
-		},
-		Focus: ImageButtonStyle{
-			Border:      borderSizes,
-			Paddings:    BorderSizes{0, 0, 0, 0},
-			BorderColor: borderColor,
-			BgColor:     bgColor4Over,
-			FgColor:     fgColor,
-		},
-		Pressed: ImageButtonStyle{
-			Border:      BorderSizes{2, 2, 2, 2},
-			Paddings:    BorderSizes{0, 0, 0, 0},
-			BorderColor: borderColor,
-			BgColor:     bgColor4Over,
-			FgColor:     fgColor,
-		},
-		Disabled: ImageButtonStyle{
-			Border:      borderSizes,
-			Paddings:    BorderSizes{0, 0, 0, 0},
-			BorderColor: borderColorDis,
-			BgColor:     bgColor4,
-			FgColor:     fgColorDis,
-		},
-	}
-
-}

+ 25 - 0
gui/style_default.go

@@ -0,0 +1,25 @@
+// Copyright 2016 The G3N Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package gui
+
+var defaultStyle *Style
+
+// Sets the default style
+func init() {
+
+	defaultStyle = NewLightStyle()
+}
+
+// StyleDefault() returns a pointer to the current default style
+func StyleDefault() *Style {
+
+	return defaultStyle
+}
+
+// SetStyleDefault sets the default style
+func SetStyleDefault(s *Style) {
+
+	defaultStyle = s
+}

+ 798 - 0
gui/style_light.go

@@ -0,0 +1,798 @@
+// Copyright 2016 The G3N Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+package gui
+
+import (
+	"github.com/g3n/engine/gui/assets"
+	"github.com/g3n/engine/gui/assets/icon"
+	"github.com/g3n/engine/math32"
+	"github.com/g3n/engine/text"
+)
+
+// NewLightStyle creates and returns a pointer to the a new "light" style
+func NewLightStyle() *Style {
+
+	// Fonts to use
+	const fontName = "fonts/FreeSans.ttf"
+	const iconName = "fonts/MaterialIcons-Regular.ttf"
+	s := new(Style)
+
+	// Creates text font
+	fontData := assets.MustAsset(fontName)
+	font, err := text.NewFontFromData(fontData)
+	if err != nil {
+		panic(err)
+	}
+	font.SetLineSpacing(1.0)
+	font.SetSize(14)
+	font.SetDPI(72)
+	font.SetFgColor4(&math32.Color4{0, 0, 0, 1})
+	font.SetBgColor4(&math32.Color4{1, 1, 1, 0})
+	s.Font = font
+
+	// Creates icon font
+	fontIconData := assets.MustAsset(iconName)
+	fontIcon, err := text.NewFontFromData(fontIconData)
+	if err != nil {
+		panic(err)
+	}
+	fontIcon.SetLineSpacing(1.0)
+	fontIcon.SetSize(14)
+	fontIcon.SetDPI(72)
+	fontIcon.SetFgColor4(&math32.Color4{0, 0, 0, 1})
+	fontIcon.SetBgColor4(&math32.Color4{1, 1, 1, 1})
+	s.FontIcon = fontIcon
+
+	borderSizes := BorderSizes{1, 1, 1, 1}
+	borderColor := math32.Color4{0, 0, 0, 1}
+	borderColorDis := math32.Color4{0.4, 0.4, 0.4, 1}
+
+	bgColor := math32.Color{0.85, 0.85, 0.85}
+	bgColor4 := math32.Color4{0, 0, 0, 0}
+	bgColorOver := math32.Color{0.9, 0.9, 0.9}
+	bgColor4Over := math32.Color4{1, 1, 1, 0.5}
+	bgColor4Sel := math32.Color4{0.6, 0.6, 0.6, 1}
+
+	fgColor := math32.Color{0, 0, 0}
+	fgColorSel := math32.Color{0, 0, 0}
+	fgColorDis := math32.Color{0.4, 0.4, 0.4}
+
+	// Button styles
+	s.Button = ButtonStyles{
+		Normal: ButtonStyle{
+			Border:      borderSizes,
+			Paddings:    BorderSizes{2, 4, 2, 4},
+			BorderColor: borderColor,
+			BgColor:     bgColor,
+			FgColor:     fgColor,
+		},
+		Over: ButtonStyle{
+			Border:      borderSizes,
+			Paddings:    BorderSizes{2, 4, 2, 4},
+			BorderColor: borderColor,
+			BgColor:     bgColorOver,
+			FgColor:     fgColor,
+		},
+		Focus: ButtonStyle{
+			Border:      borderSizes,
+			Paddings:    BorderSizes{2, 4, 2, 4},
+			BorderColor: borderColor,
+			BgColor:     bgColorOver,
+			FgColor:     fgColor,
+		},
+		Pressed: ButtonStyle{
+			Border:      BorderSizes{2, 2, 2, 2},
+			Paddings:    BorderSizes{2, 4, 2, 4},
+			BorderColor: borderColor,
+			BgColor:     bgColorOver,
+			FgColor:     fgColor,
+		},
+		Disabled: ButtonStyle{
+			Border:      borderSizes,
+			Paddings:    BorderSizes{2, 4, 2, 4},
+			BorderColor: borderColorDis,
+			BgColor:     bgColor,
+			FgColor:     fgColorDis,
+		},
+	}
+
+	// CheckRadio styles
+	s.CheckRadio = CheckRadioStyles{
+		Normal: CheckRadioStyle{
+			Border:      BorderSizes{0, 0, 0, 0},
+			Paddings:    BorderSizes{0, 0, 0, 0},
+			BorderColor: borderColor,
+			BgColor:     bgColor4,
+			FgColor:     fgColor,
+		},
+		Over: CheckRadioStyle{
+			Border:      BorderSizes{0, 0, 0, 0},
+			Paddings:    BorderSizes{0, 0, 0, 0},
+			BorderColor: borderColor,
+			BgColor:     bgColor4Over,
+			FgColor:     fgColor,
+		},
+		Focus: CheckRadioStyle{
+			Border:      BorderSizes{0, 0, 0, 0},
+			Paddings:    BorderSizes{0, 0, 0, 0},
+			BorderColor: borderColor,
+			BgColor:     bgColor4Over,
+			FgColor:     fgColor,
+		},
+		Disabled: CheckRadioStyle{
+			Border:      BorderSizes{0, 0, 0, 0},
+			Paddings:    BorderSizes{0, 0, 0, 0},
+			BorderColor: borderColor,
+			BgColor:     bgColor4,
+			FgColor:     fgColorDis,
+		},
+	}
+
+	// Edit styles
+	s.Edit = EditStyles{
+		Normal: EditStyle{
+			Border:      BorderSizes{1, 1, 1, 1},
+			Paddings:    BorderSizes{0, 0, 0, 0},
+			BorderColor: borderColor,
+			BgColor:     bgColor,
+			BgAlpha:     1.0,
+			FgColor:     fgColor,
+			HolderColor: math32.Color{0.4, 0.4, 0.4},
+		},
+		Over: EditStyle{
+			Border:      BorderSizes{1, 1, 1, 1},
+			Paddings:    BorderSizes{0, 0, 0, 0},
+			BorderColor: borderColor,
+			BgColor:     bgColorOver,
+			BgAlpha:     1.0,
+			FgColor:     fgColor,
+			HolderColor: math32.Color{0.4, 0.4, 0.4},
+		},
+		Focus: EditStyle{
+			Border:      BorderSizes{1, 1, 1, 1},
+			Paddings:    BorderSizes{0, 0, 0, 0},
+			BorderColor: borderColor,
+			BgColor:     bgColorOver,
+			BgAlpha:     1.0,
+			FgColor:     fgColor,
+			HolderColor: math32.Color{0.4, 0.4, 0.4},
+		},
+		Disabled: EditStyle{
+			Border:      BorderSizes{1, 1, 1, 1},
+			Paddings:    BorderSizes{0, 0, 0, 0},
+			BorderColor: borderColor,
+			BgColor:     bgColor,
+			BgAlpha:     1.0,
+			FgColor:     fgColorDis,
+			HolderColor: math32.Color{0.4, 0.4, 0.4},
+		},
+	}
+
+	// ScrollBar style
+	s.ScrollBar = ScrollBarStyle{
+		Paddings:     BorderSizes{1, 1, 1, 1},
+		Borders:      BorderSizes{1, 1, 1, 1},
+		BordersColor: borderColor,
+		Color:        math32.Color{0.8, 0.8, 0.8},
+		Button: ScrollBarButtonStyle{
+			Borders:      BorderSizes{1, 1, 1, 1},
+			BordersColor: borderColor,
+			Color:        math32.Color{0.5, 0.5, 0.5},
+			Size:         30,
+		},
+	}
+
+	// Slider styles
+	s.Slider = SliderStyles{
+		Normal: SliderStyle{
+			Border:      borderSizes,
+			BorderColor: borderColor,
+			Paddings:    BorderSizes{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},
+			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},
+			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},
+			BgColor:     math32.Color4{0.8, 0.8, 0.8, 1},
+			FgColor:     math32.Color4{0, 0.8, 0, 1},
+		},
+	}
+
+	// Splitter styles
+	s.Splitter = SplitterStyles{
+		Normal: SplitterStyle{
+			SpacerBorderColor: borderColor,
+			SpacerColor:       bgColor,
+			SpacerSize:        6,
+		},
+		Over: SplitterStyle{
+			SpacerBorderColor: borderColor,
+			SpacerColor:       bgColorOver,
+			SpacerSize:        6,
+		},
+		Drag: SplitterStyle{
+			SpacerBorderColor: borderColor,
+			SpacerColor:       bgColorOver,
+			SpacerSize:        6,
+		},
+	}
+
+	s.Window = WindowStyles{
+		Normal: WindowStyle{
+			Border:           BorderSizes{4, 4, 4, 4},
+			Paddings:         BorderSizes{0, 0, 0, 0},
+			BorderColor:      math32.Color4{0.2, 0.2, 0.2, 1},
+			TitleBorders:     BorderSizes{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},
+			BorderColor:      math32.Color4{0.2, 0.2, 0.2, 1},
+			TitleBorders:     BorderSizes{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},
+			BorderColor:      math32.Color4{0.2, 0.2, 0.2, 1},
+			TitleBorders:     BorderSizes{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},
+			BorderColor:      math32.Color4{0.2, 0.2, 0.2, 1},
+			TitleBorders:     BorderSizes{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},
+		},
+	}
+
+	// Scroller styles
+	s.Scroller = ScrollerStyles{
+		Normal: ScrollerStyle{
+			Border:      BorderSizes{1, 1, 1, 1},
+			Paddings:    BorderSizes{0, 0, 0, 0},
+			BorderColor: borderColor,
+			BgColor:     bgColor,
+			FgColor:     fgColor,
+		},
+		Over: ScrollerStyle{
+			Border:      BorderSizes{1, 1, 1, 1},
+			Paddings:    BorderSizes{0, 0, 0, 0},
+			BorderColor: borderColor,
+			BgColor:     bgColorOver,
+			FgColor:     fgColor,
+		},
+		Focus: ScrollerStyle{
+			Border:      BorderSizes{1, 1, 1, 1},
+			Paddings:    BorderSizes{0, 0, 0, 0},
+			BorderColor: borderColor,
+			BgColor:     bgColorOver,
+			FgColor:     fgColor,
+		},
+		Disabled: ScrollerStyle{
+			Border:      BorderSizes{1, 1, 1, 1},
+			Paddings:    BorderSizes{0, 0, 0, 0},
+			BorderColor: borderColor,
+			BgColor:     bgColor,
+			FgColor:     fgColor,
+		},
+	}
+
+	// List styles
+	s.List = ListStyles{
+		Scroller: &ScrollerStyles{
+			Normal: ScrollerStyle{
+				Border:      BorderSizes{1, 1, 1, 1},
+				Paddings:    BorderSizes{0, 0, 0, 0},
+				BorderColor: borderColor,
+				BgColor:     bgColor,
+				FgColor:     fgColor,
+			},
+			Over: ScrollerStyle{
+				Border:      BorderSizes{1, 1, 1, 1},
+				Paddings:    BorderSizes{0, 0, 0, 0},
+				BorderColor: borderColor,
+				BgColor:     bgColorOver,
+				FgColor:     fgColor,
+			},
+			Focus: ScrollerStyle{
+				Border:      BorderSizes{1, 1, 1, 1},
+				Paddings:    BorderSizes{0, 0, 0, 0},
+				BorderColor: borderColor,
+				BgColor:     bgColorOver,
+				FgColor:     fgColor,
+			},
+			Disabled: ScrollerStyle{
+				Border:      BorderSizes{1, 1, 1, 1},
+				Paddings:    BorderSizes{0, 0, 0, 0},
+				BorderColor: borderColor,
+				BgColor:     bgColor,
+				FgColor:     fgColor,
+			},
+		},
+		Item: &ListItemStyles{
+			Normal: ListItemStyle{
+				Border:      BorderSizes{1, 0, 1, 0},
+				Paddings:    BorderSizes{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},
+				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},
+				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},
+				BorderColor: math32.Color4{0, 0, 0, 1},
+				BgColor:     bgColor4Sel,
+				FgColor:     fgColorSel,
+			},
+		},
+	}
+
+	s.DropDown = DropDownStyles{
+		Normal: &DropDownStyle{
+			Border:      BorderSizes{1, 1, 1, 1},
+			Paddings:    BorderSizes{0, 0, 0, 2},
+			BorderColor: borderColor,
+			BgColor:     bgColor,
+			FgColor:     fgColor,
+		},
+		Over: &DropDownStyle{
+			Border:      BorderSizes{1, 1, 1, 1},
+			Paddings:    BorderSizes{0, 0, 0, 2},
+			BorderColor: borderColor,
+			BgColor:     bgColorOver,
+			FgColor:     fgColor,
+		},
+		Focus: &DropDownStyle{
+			Border:      BorderSizes{1, 1, 1, 1},
+			Paddings:    BorderSizes{0, 0, 0, 2},
+			BorderColor: borderColor,
+			BgColor:     bgColorOver,
+			FgColor:     fgColor,
+		},
+		Disabled: &DropDownStyle{
+			Border:      BorderSizes{1, 1, 1, 1},
+			Paddings:    BorderSizes{0, 0, 0, 2},
+			BorderColor: borderColor,
+			BgColor:     bgColor,
+			FgColor:     fgColor,
+		},
+	}
+
+	s.Folder = FolderStyles{
+		Normal: &FolderStyle{
+			Margins:     BorderSizes{0, 0, 0, 0},
+			Border:      BorderSizes{1, 1, 1, 1},
+			Paddings:    BorderSizes{2, 0, 2, 2},
+			BorderColor: borderColor,
+			BgColor:     bgColor,
+			FgColor:     fgColor,
+			Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
+		},
+		Over: &FolderStyle{
+			Margins:     BorderSizes{0, 0, 0, 0},
+			Border:      BorderSizes{1, 1, 1, 1},
+			Paddings:    BorderSizes{2, 0, 2, 2},
+			BorderColor: borderColor,
+			BgColor:     bgColorOver,
+			FgColor:     fgColor,
+			Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
+		},
+		Focus: &FolderStyle{
+			Margins:     BorderSizes{0, 0, 0, 0},
+			Border:      BorderSizes{1, 1, 1, 1},
+			Paddings:    BorderSizes{2, 2, 2, 2},
+			BorderColor: borderColor,
+			BgColor:     bgColorOver,
+			FgColor:     fgColor,
+			Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
+		},
+		Disabled: &FolderStyle{
+			Margins:     BorderSizes{0, 0, 0, 0},
+			Border:      BorderSizes{1, 1, 1, 1},
+			Paddings:    BorderSizes{2, 2, 2, 2},
+			BorderColor: borderColor,
+			BgColor:     bgColorOver,
+			FgColor:     fgColor,
+			Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
+		},
+	}
+
+	s.Tree = TreeStyles{
+		List: &ListStyles{
+			Scroller: &ScrollerStyles{
+				Normal: ScrollerStyle{
+					Border:      BorderSizes{1, 1, 1, 1},
+					Paddings:    BorderSizes{0, 0, 0, 0},
+					BorderColor: borderColor,
+					BgColor:     bgColor,
+					FgColor:     fgColor,
+				},
+				Over: ScrollerStyle{
+					Border:      BorderSizes{1, 1, 1, 1},
+					Paddings:    BorderSizes{0, 0, 0, 0},
+					BorderColor: borderColor,
+					BgColor:     bgColorOver,
+					FgColor:     fgColor,
+				},
+				Focus: ScrollerStyle{
+					Border:      BorderSizes{1, 1, 1, 1},
+					Paddings:    BorderSizes{0, 0, 0, 0},
+					BorderColor: borderColor,
+					BgColor:     bgColorOver,
+					FgColor:     fgColor,
+				},
+				Disabled: ScrollerStyle{
+					Border:      BorderSizes{1, 1, 1, 1},
+					Paddings:    BorderSizes{0, 0, 0, 0},
+					BorderColor: borderColor,
+					BgColor:     bgColor,
+					FgColor:     fgColor,
+				},
+			},
+			Item: &ListItemStyles{
+				Normal: ListItemStyle{
+					Border:      BorderSizes{1, 0, 1, 0},
+					Paddings:    BorderSizes{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},
+					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},
+					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},
+					BorderColor: math32.Color4{0, 0, 0, 1},
+					BgColor:     bgColor4Sel,
+					FgColor:     fgColorSel,
+				},
+			},
+		},
+		Node: &TreeNodeStyles{
+			Normal: TreeNodeStyle{
+				Border:      BorderSizes{0, 0, 0, 0},
+				Paddings:    BorderSizes{0, 0, 0, 0},
+				BorderColor: borderColor,
+				BgColor:     bgColor4,
+				FgColor:     fgColor,
+				Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
+			},
+		},
+		Padlevel: 16.0,
+	}
+
+	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},
+				BorderColor: math32.Color4{0, 0, 0, 0},
+				BgColor:     math32.Color{0, 0.5, 1},
+				FgColor:     fgColor,
+				Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
+			},
+			Over: &FolderStyle{
+				Margins:     BorderSizes{0, 0, 0, 0},
+				Border:      BorderSizes{1, 1, 1, 1},
+				Paddings:    BorderSizes{2, 0, 2, 2},
+				BorderColor: math32.Color4{0, 0, 0, 0},
+				BgColor:     math32.Color{0, 0.5, 1},
+				FgColor:     fgColor,
+				Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
+			},
+			Focus: &FolderStyle{
+				Margins:     BorderSizes{0, 0, 0, 0},
+				Border:      BorderSizes{1, 1, 1, 1},
+				Paddings:    BorderSizes{2, 2, 2, 2},
+				BorderColor: math32.Color4{0, 0, 0, 0},
+				BgColor:     math32.Color{0, 0.5, 1},
+				FgColor:     fgColor,
+				Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
+			},
+			Disabled: &FolderStyle{
+				Margins:     BorderSizes{0, 0, 0, 0},
+				Border:      BorderSizes{1, 1, 1, 1},
+				Paddings:    BorderSizes{2, 2, 2, 2},
+				BorderColor: math32.Color4{0, 0, 0, 0},
+				BgColor:     math32.Color{0, 0.5, 1},
+				FgColor:     fgColor,
+				Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
+			},
+		},
+		Tree: &TreeStyles{
+			List: &ListStyles{
+				Scroller: &ScrollerStyles{
+					Normal: ScrollerStyle{
+						Border:      BorderSizes{1, 1, 1, 1},
+						Paddings:    BorderSizes{0, 2, 0, 0},
+						BorderColor: borderColor,
+						BgColor:     bgColor,
+						FgColor:     fgColor,
+					},
+					Over: ScrollerStyle{
+						Border:      BorderSizes{1, 1, 1, 1},
+						Paddings:    BorderSizes{0, 2, 0, 0},
+						BorderColor: borderColor,
+						BgColor:     bgColorOver,
+						FgColor:     fgColor,
+					},
+					Focus: ScrollerStyle{
+						Border:      BorderSizes{1, 1, 1, 1},
+						Paddings:    BorderSizes{0, 2, 0, 0},
+						BorderColor: borderColor,
+						BgColor:     bgColorOver,
+						FgColor:     fgColor,
+					},
+					Disabled: ScrollerStyle{
+						Border:      BorderSizes{1, 1, 1, 1},
+						Paddings:    BorderSizes{0, 2, 0, 0},
+						BorderColor: borderColor,
+						BgColor:     bgColor,
+						FgColor:     fgColor,
+					},
+				},
+				Item: &ListItemStyles{
+					Normal: ListItemStyle{
+						Border:      BorderSizes{1, 0, 1, 0},
+						Paddings:    BorderSizes{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},
+						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},
+						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},
+						BorderColor: math32.Color4{0, 0, 0, 1},
+						BgColor:     bgColor4Sel,
+						FgColor:     fgColorSel,
+					},
+				},
+			},
+			Node: &TreeNodeStyles{
+				Normal: TreeNodeStyle{
+					Border:      BorderSizes{0, 0, 0, 0},
+					Paddings:    BorderSizes{0, 0, 0, 0},
+					BorderColor: borderColor,
+					BgColor:     bgColor4,
+					FgColor:     fgColor,
+					Icons:       [2]int{icon.ExpandMore, icon.ExpandLess},
+				},
+			},
+			Padlevel: 2.0,
+		},
+	}
+
+	// Menu styles
+	s.Menu = MenuStyles{
+		Body: &MenuBodyStyles{
+			Normal: MenuBodyStyle{
+				Border:      BorderSizes{1, 1, 1, 1},
+				Paddings:    BorderSizes{2, 2, 2, 2},
+				BorderColor: borderColor,
+				BgColor:     bgColor,
+				FgColor:     fgColor,
+			},
+			Over: MenuBodyStyle{
+				Border:      BorderSizes{1, 1, 1, 1},
+				Paddings:    BorderSizes{2, 2, 2, 2},
+				BorderColor: borderColor,
+				BgColor:     bgColorOver,
+				FgColor:     fgColor,
+			},
+			Focus: MenuBodyStyle{
+				Border:      BorderSizes{1, 1, 1, 1},
+				Paddings:    BorderSizes{2, 2, 2, 2},
+				BorderColor: borderColor,
+				BgColor:     bgColorOver,
+				FgColor:     fgColor,
+			},
+			Disabled: MenuBodyStyle{
+				Border:      BorderSizes{1, 1, 1, 1},
+				Paddings:    BorderSizes{2, 2, 2, 2},
+				BorderColor: borderColor,
+				BgColor:     bgColor,
+				FgColor:     fgColor,
+			},
+		},
+		Item: &MenuItemStyles{
+			Normal: MenuItemStyle{
+				Border:           BorderSizes{0, 0, 0, 0},
+				Paddings:         BorderSizes{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},
+			},
+			Over: MenuItemStyle{
+				Border:           BorderSizes{0, 0, 0, 0},
+				Paddings:         BorderSizes{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},
+			},
+			Disabled: MenuItemStyle{
+				Border:           BorderSizes{0, 0, 0, 0},
+				Paddings:         BorderSizes{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},
+			},
+			Separator: MenuItemStyle{
+				Border:      BorderSizes{2, 2, 2, 2},
+				Paddings:    BorderSizes{0, 0, 0, 0},
+				BorderColor: math32.Color4{0, 0, 0, 0},
+				BgColor:     math32.Color{0.6, 0.6, 0.6},
+				FgColor:     fgColor,
+			},
+		},
+	}
+
+	// Table styles
+	s.Table = TableStyles{
+		Header: &TableHeaderStyle{
+			Border:      BorderSizes{0, 1, 1, 0},
+			Paddings:    BorderSizes{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},
+			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},
+			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},
+			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},
+			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},
+			BorderColor: borderColor,
+			BgColor:     math32.Color{0.9, 0.9, 0.9},
+			FgColor:     fgColor,
+		},
+		Resizer: &TableResizerStyle{
+			Width:       4,
+			Border:      BorderSizes{0, 0, 0, 0},
+			BorderColor: borderColor,
+			BgColor:     math32.Color4{0.4, 0.4, 0.4, 0.6},
+		},
+	}
+
+	// Button styles
+	s.ImageButton = ImageButtonStyles{
+		Normal: ImageButtonStyle{
+			Border:      borderSizes,
+			Paddings:    BorderSizes{0, 0, 0, 0},
+			BorderColor: borderColor,
+			BgColor:     bgColor4,
+			FgColor:     fgColor,
+		},
+		Over: ImageButtonStyle{
+			Border:      borderSizes,
+			Paddings:    BorderSizes{0, 0, 0, 0},
+			BorderColor: borderColor,
+			BgColor:     bgColor4Over,
+			FgColor:     fgColor,
+		},
+		Focus: ImageButtonStyle{
+			Border:      borderSizes,
+			Paddings:    BorderSizes{0, 0, 0, 0},
+			BorderColor: borderColor,
+			BgColor:     bgColor4Over,
+			FgColor:     fgColor,
+		},
+		Pressed: ImageButtonStyle{
+			Border:      BorderSizes{2, 2, 2, 2},
+			Paddings:    BorderSizes{0, 0, 0, 0},
+			BorderColor: borderColor,
+			BgColor:     bgColor4Over,
+			FgColor:     fgColor,
+		},
+		Disabled: ImageButtonStyle{
+			Border:      borderSizes,
+			Paddings:    BorderSizes{0, 0, 0, 0},
+			BorderColor: borderColorDis,
+			BgColor:     bgColor4,
+			FgColor:     fgColorDis,
+		},
+	}
+	return s
+}

+ 2 - 2
gui/table.go

@@ -217,7 +217,7 @@ func NewTable(width, height float32, cols []TableColumn) (*Table, error) {
 
 	t := new(Table)
 	t.Panel.Initialize(width, height)
-	t.styles = &StyleDefault.Table
+	t.styles = &StyleDefault().Table
 	t.rowCursor = -1
 
 	// Initialize table header
@@ -722,7 +722,7 @@ func (t *Table) insertRow(row int, values map[string]interface{}) {
 		// Creates tableRow cell panel
 		cell := new(tableCell)
 		cell.Initialize(0, 0)
-		cell.label.initialize("", StyleDefault.Font)
+		cell.label.initialize("", StyleDefault().Font)
 		cell.Add(&cell.label)
 		trow.cells = append(trow.cells, cell)
 		trow.Panel.Add(cell)

+ 3 - 3
gui/tree.go

@@ -57,7 +57,7 @@ func NewTree(width, height float32) *Tree {
 func (t *Tree) Initialize(width, height float32) {
 
 	t.List.initialize(true, width, height)
-	t.SetStyles(&StyleDefault.Tree)
+	t.SetStyles(&StyleDefault().Tree)
 	t.List.Subscribe(OnKeyDown, t.onKey)
 	t.List.Subscribe(OnKeyUp, t.onKey)
 	t.List.Subscribe(OnCursor, t.onCursor)
@@ -206,11 +206,11 @@ func newTreeNode(text string, tree *Tree, parNode *TreeNode) *TreeNode {
 	n.Panel.Initialize(0, 0)
 
 	// Initialize node label
-	n.label.initialize(text, StyleDefault.Font)
+	n.label.initialize(text, StyleDefault().Font)
 	n.Panel.Add(&n.label)
 
 	// Create node icon
-	n.icon.initialize("", StyleDefault.FontIcon)
+	n.icon.initialize("", StyleDefault().FontIcon)
 	n.icon.SetFontSize(n.label.FontSize() * 1.3)
 	n.Panel.Add(&n.icon)
 

+ 2 - 2
gui/window.go

@@ -74,7 +74,7 @@ const (
 func NewWindow(width, height float32) *Window {
 
 	w := new(Window)
-	w.styles = &StyleDefault.Window
+	w.styles = &StyleDefault().Window
 
 	w.Panel.Initialize(width, height)
 	w.Panel.Subscribe(OnMouseDown, w.onMouse)
@@ -281,7 +281,7 @@ func newWindowTitle(win *Window, text string) *WindowTitle {
 	wt.win = win
 
 	wt.Panel.Initialize(0, 0)
-	wt.label.initialize(text, StyleDefault.Font)
+	wt.label.initialize(text, StyleDefault().Font)
 	wt.Panel.Add(&wt.label)
 
 	wt.Subscribe(OnMouseDown, wt.onMouse)