style_light.go 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377
  1. // Copyright 2016 The G3N Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package gui
  5. import (
  6. "github.com/g3n/engine/gui/assets"
  7. "github.com/g3n/engine/gui/assets/icon"
  8. "github.com/g3n/engine/math32"
  9. "github.com/g3n/engine/text"
  10. )
  11. // NewLightStyle creates and returns a pointer to the a new "light" style
  12. func NewLightStyle() *Style {
  13. // Fonts to use
  14. const fontName = "fonts/FreeSans.ttf"
  15. const iconName = "fonts/MaterialIcons-Regular.ttf"
  16. s := new(Style)
  17. // Creates text font
  18. fontData := assets.MustAsset(fontName)
  19. font, err := text.NewFontFromData(fontData)
  20. if err != nil {
  21. panic(err)
  22. }
  23. font.SetLineSpacing(1.0)
  24. font.SetSize(14)
  25. font.SetDPI(72)
  26. font.SetFgColor4(math32.NewColor4("black"))
  27. font.SetBgColor4(math32.NewColor4("black", 0))
  28. s.Font = font
  29. // Creates icon font
  30. fontIconData := assets.MustAsset(iconName)
  31. fontIcon, err := text.NewFontFromData(fontIconData)
  32. if err != nil {
  33. panic(err)
  34. }
  35. fontIcon.SetLineSpacing(1.0)
  36. fontIcon.SetSize(14)
  37. fontIcon.SetDPI(72)
  38. fontIcon.SetFgColor4(math32.NewColor4("black"))
  39. fontIcon.SetBgColor4(math32.NewColor4("white", 0))
  40. s.FontIcon = fontIcon
  41. zeroBounds := RectBounds{0, 0, 0, 0}
  42. oneBounds := RectBounds{1, 1, 1, 1}
  43. twoBounds := RectBounds{2, 2, 2, 2}
  44. borderColor := math32.Color4Name("DimGray")
  45. borderColorDis := math32.Color4Name("LightGray")
  46. bgColor := math32.Color4{0.85, 0.85, 0.85, 1}
  47. bgColor4 := math32.Color4{0, 0, 0, 0}
  48. bgColorOver := math32.Color4{0.9, 0.9, 0.9, 1}
  49. bgColor4Over := math32.Color4{1, 1, 1, 0.5}
  50. bgColor4Sel := math32.Color4{0.6, 0.6, 0.6, 1}
  51. fgColor := math32.Color4{0, 0, 0, 1}
  52. fgColorSel := math32.Color4{0, 0, 0, 1}
  53. fgColorDis := math32.Color4{0.4, 0.4, 0.4, 1}
  54. // Button styles
  55. s.Button = ButtonStyles{}
  56. s.Button.Normal = ButtonStyle{}
  57. s.Button.Normal.Border = oneBounds
  58. s.Button.Normal.Padding = RectBounds{2, 4, 2, 4}
  59. s.Button.Normal.BorderColor = borderColor
  60. s.Button.Normal.BgColor = bgColor
  61. s.Button.Normal.FgColor = fgColor
  62. s.Button.Over = s.Button.Normal
  63. s.Button.Over.BgColor = bgColorOver
  64. s.Button.Focus = s.Button.Over
  65. s.Button.Pressed = s.Button.Over
  66. s.Button.Pressed.Border = twoBounds
  67. s.Button.Disabled = s.Button.Normal
  68. s.Button.Disabled.BorderColor = borderColorDis
  69. s.Button.Disabled.FgColor = fgColorDis
  70. // CheckRadio styles
  71. s.CheckRadio = CheckRadioStyles{}
  72. s.CheckRadio.Normal = CheckRadioStyle{}
  73. s.CheckRadio.Normal.BorderColor = borderColor
  74. s.CheckRadio.Normal.BgColor = bgColor4
  75. s.CheckRadio.Normal.FgColor = fgColor
  76. s.CheckRadio.Over = s.CheckRadio.Normal
  77. s.CheckRadio.Over.BgColor = bgColor4Over
  78. s.CheckRadio.Focus = s.CheckRadio.Over
  79. s.CheckRadio.Disabled = s.CheckRadio.Normal
  80. s.CheckRadio.Disabled.FgColor = fgColorDis
  81. // Edit styles
  82. s.Edit = EditStyles{}
  83. s.Edit.Normal = EditStyle{
  84. Border: oneBounds,
  85. Paddings: zeroBounds,
  86. BorderColor: borderColor,
  87. BgColor: bgColor,
  88. BgAlpha: 1.0,
  89. FgColor: fgColor,
  90. HolderColor: math32.Color4{0.4, 0.4, 0.4, 1},
  91. }
  92. s.Edit.Over = s.Edit.Normal
  93. s.Edit.Over.BgColor = bgColorOver
  94. s.Edit.Focus = s.Edit.Over
  95. s.Edit.Disabled = s.Edit.Normal
  96. s.Edit.Disabled.FgColor = fgColorDis
  97. // ScrollBar styles
  98. s.ScrollBar = ScrollBarStyles{}
  99. s.ScrollBar.Normal = ScrollBarStyle{}
  100. s.ScrollBar.Normal.Padding = oneBounds
  101. s.ScrollBar.Normal.Border = oneBounds
  102. s.ScrollBar.Normal.BorderColor = borderColor
  103. s.ScrollBar.Normal.BgColor = math32.Color4{0.8, 0.8, 0.8, 1}
  104. s.ScrollBar.Normal.Button = ScrollBarButtonStyle{
  105. Borders: oneBounds,
  106. BordersColor: borderColor,
  107. Color: math32.Color4{0.5, 0.5, 0.5, 1},
  108. Size: 30,
  109. }
  110. s.ScrollBar.Over = s.ScrollBar.Normal
  111. s.ScrollBar.Disabled = s.ScrollBar.Normal
  112. // Slider styles
  113. s.Slider = SliderStyles{}
  114. s.Slider.Normal = SliderStyle{}
  115. s.Slider.Normal.Border = oneBounds
  116. s.Slider.Normal.BorderColor = borderColor
  117. s.Slider.Normal.BgColor = math32.Color4{0.8, 0.8, 0.8, 1}
  118. s.Slider.Normal.FgColor = math32.Color4{0, 0.8, 0, 1}
  119. s.Slider.Over = s.Slider.Normal
  120. s.Slider.Over.BgColor = math32.Color4{1, 1, 1, 1}
  121. s.Slider.Over.FgColor = math32.Color4{0, 1, 0, 1}
  122. s.Slider.Focus = s.Slider.Over
  123. s.Slider.Disabled = s.Slider.Normal
  124. // Splitter styles
  125. s.Splitter = SplitterStyles{}
  126. s.Splitter.Normal = SplitterStyle{
  127. SpacerBorderColor: borderColor,
  128. SpacerColor: bgColor,
  129. SpacerSize: 6,
  130. }
  131. s.Splitter.Over = s.Splitter.Normal
  132. s.Splitter.Over.SpacerColor = bgColorOver
  133. s.Splitter.Drag = s.Splitter.Over
  134. // Window styles
  135. s.Window = WindowStyles{}
  136. s.Window.Normal = WindowStyle{
  137. Border: RectBounds{4, 4, 4, 4},
  138. Paddings: zeroBounds,
  139. BorderColor: math32.Color4{0.2, 0.2, 0.2, 1},
  140. TitleBorders: RectBounds{0, 0, 1, 0},
  141. TitleBorderColor: math32.Color4{0, 0, 0, 1},
  142. TitleBgColor: math32.Color4{0, 1, 0, 1},
  143. TitleFgColor: math32.Color4{0, 0, 0, 1},
  144. }
  145. s.Window.Over = s.Window.Normal
  146. s.Window.Focus = s.Window.Normal
  147. s.Window.Disabled = s.Window.Normal
  148. // Scroller styles
  149. s.Scroller = ScrollerStyles{}
  150. s.Scroller.Normal = ScrollerStyle{}
  151. s.Scroller.Normal.Border = oneBounds
  152. s.Scroller.Normal.BorderColor = borderColor
  153. s.Scroller.Normal.BgColor = bgColor
  154. s.Scroller.Normal.FgColor = fgColor
  155. s.Scroller.Over = s.Scroller.Normal
  156. s.Scroller.Over.BgColor = bgColorOver
  157. s.Scroller.Focus = s.Scroller.Over
  158. s.Scroller.Disabled = s.Scroller.Normal
  159. // List styles
  160. s.List = ListStyles{}
  161. s.List.Scroller = &s.Scroller
  162. s.List.Item = &ListItemStyles{}
  163. s.List.Item.Normal = ListItemStyle{}
  164. s.List.Item.Normal.Border = RectBounds{0, 0, 1, 0}
  165. s.List.Item.Normal.Padding = RectBounds{0, 0, 0, 2}
  166. s.List.Item.Normal.BorderColor = math32.Color4{0, 0, 0, 0}
  167. s.List.Item.Normal.BgColor = bgColor4
  168. s.List.Item.Normal.FgColor = fgColor
  169. s.List.Item.Selected = s.List.Item.Normal
  170. s.List.Item.Selected.BgColor = bgColor4Sel
  171. s.List.Item.Selected.FgColor = fgColorSel
  172. s.List.Item.Highlighted = s.List.Item.Normal
  173. s.List.Item.Highlighted.BorderColor = math32.Color4{0, 0, 0, 1}
  174. s.List.Item.Highlighted.BgColor = bgColor4Over
  175. s.List.Item.Highlighted.FgColor = fgColor
  176. s.List.Item.SelHigh = s.List.Item.Highlighted
  177. s.List.Item.SelHigh.BgColor = bgColor4Sel
  178. s.List.Item.SelHigh.FgColor = fgColorSel
  179. // DropDown styles
  180. s.DropDown = DropDownStyles{}
  181. s.DropDown.Normal = DropDownStyle{}
  182. s.DropDown.Normal.Border = oneBounds
  183. s.DropDown.Normal.Padding = RectBounds{0, 0, 0, 2}
  184. s.DropDown.Normal.BorderColor = borderColor
  185. s.DropDown.Normal.BgColor = bgColor
  186. s.DropDown.Normal.FgColor = fgColor
  187. s.DropDown.Over = s.DropDown.Normal
  188. s.DropDown.Over.BgColor = bgColorOver
  189. s.DropDown.Focus = s.DropDown.Over
  190. s.DropDown.Disabled = s.DropDown.Normal
  191. // Folder styles
  192. s.Folder = FolderStyles{}
  193. s.Folder.Normal = FolderStyle{}
  194. s.Folder.Normal.Border = oneBounds
  195. s.Folder.Normal.Padding = RectBounds{2, 0, 2, 2}
  196. s.Folder.Normal.BorderColor = borderColor
  197. s.Folder.Normal.BgColor = bgColor
  198. s.Folder.Normal.FgColor = fgColor
  199. s.Folder.Normal.Icons = [2]string{icon.ExpandMore, icon.ExpandLess}
  200. s.Folder.Over = s.Folder.Normal
  201. s.Folder.Over.BgColor = bgColorOver
  202. s.Folder.Focus = s.Folder.Over
  203. s.Folder.Focus.Padding = twoBounds
  204. s.Folder.Disabled = s.Folder.Focus
  205. // Tree styles
  206. s.Tree = TreeStyles{}
  207. s.Tree.Padlevel = 16.0
  208. s.Tree.List = &s.List
  209. s.Tree.Node = &TreeNodeStyles{}
  210. s.Tree.Node.Normal = TreeNodeStyle{}
  211. s.Tree.Node.Normal.BorderColor = borderColor
  212. s.Tree.Node.Normal.BgColor = bgColor4
  213. s.Tree.Node.Normal.FgColor = fgColor
  214. s.Tree.Node.Normal.Icons = [2]string{icon.ExpandMore, icon.ExpandLess}
  215. // ControlFolder styles
  216. s.ControlFolder = ControlFolderStyles{}
  217. s.ControlFolder.Folder = &FolderStyles{}
  218. s.ControlFolder.Folder.Normal = s.Folder.Normal
  219. s.ControlFolder.Folder.Normal.BorderColor = math32.Color4{0, 0, 0, 0}
  220. s.ControlFolder.Folder.Normal.BgColor = math32.Color4{0, 0.5, 1, 1}
  221. s.ControlFolder.Folder.Over = s.ControlFolder.Folder.Normal
  222. s.ControlFolder.Folder.Focus = s.ControlFolder.Folder.Normal
  223. s.ControlFolder.Folder.Focus.Padding = twoBounds
  224. s.ControlFolder.Folder.Disabled = s.ControlFolder.Folder.Focus
  225. s.ControlFolder.Tree = &TreeStyles{}
  226. s.ControlFolder.Tree.Padlevel = 2.0
  227. s.ControlFolder.Tree.List = &ListStyles{}
  228. scrollerStylesCopy := *s.List.Scroller
  229. s.ControlFolder.Tree.List.Scroller = &scrollerStylesCopy
  230. s.ControlFolder.Tree.List.Scroller.Normal.Padding = RectBounds{0, 2, 0, 0}
  231. s.ControlFolder.Tree.List.Scroller.Over.Padding = RectBounds{0, 2, 0, 0}
  232. s.ControlFolder.Tree.List.Scroller.Focus.Padding = RectBounds{0, 2, 0, 0}
  233. s.ControlFolder.Tree.List.Scroller.Disabled.Padding = RectBounds{0, 2, 0, 0}
  234. s.ControlFolder.Tree.List.Item = s.List.Item
  235. s.ControlFolder.Tree.Node = &TreeNodeStyles{}
  236. s.ControlFolder.Tree.Node.Normal = s.Tree.Node.Normal
  237. // Menu styles
  238. s.Menu = MenuStyles{}
  239. s.Menu.Body = &MenuBodyStyles{}
  240. s.Menu.Body.Normal = MenuBodyStyle{}
  241. s.Menu.Body.Normal.Border = oneBounds
  242. s.Menu.Body.Normal.Padding = twoBounds
  243. s.Menu.Body.Normal.BorderColor = borderColor
  244. s.Menu.Body.Normal.BgColor = bgColor
  245. s.Menu.Body.Normal.FgColor = fgColor
  246. s.Menu.Body.Over = s.Menu.Body.Normal
  247. s.Menu.Body.Over.BgColor = bgColorOver
  248. s.Menu.Body.Focus = s.Menu.Body.Over
  249. s.Menu.Body.Disabled = s.Menu.Body.Normal
  250. s.Menu.Item = &MenuItemStyles{}
  251. s.Menu.Item.Normal = MenuItemStyle{}
  252. s.Menu.Item.Normal.Padding = RectBounds{2, 4, 2, 2}
  253. s.Menu.Item.Normal.BorderColor = borderColor
  254. s.Menu.Item.Normal.BgColor = bgColor
  255. s.Menu.Item.Normal.FgColor = fgColor
  256. s.Menu.Item.Normal.IconPaddings = RectBounds{0, 6, 0, 4}
  257. s.Menu.Item.Normal.ShortcutPaddings = RectBounds{0, 0, 0, 10}
  258. s.Menu.Item.Normal.RiconPaddings = RectBounds{2, 0, 0, 4}
  259. s.Menu.Item.Over = s.Menu.Item.Normal
  260. s.Menu.Item.Over.BgColor = math32.Color4{0.6, 0.6, 0.6, 1}
  261. s.Menu.Item.Disabled = s.Menu.Item.Normal
  262. s.Menu.Item.Disabled.FgColor = fgColorDis
  263. s.Menu.Item.Separator = MenuItemStyle{}
  264. s.Menu.Item.Separator.Border = twoBounds
  265. s.Menu.Item.Separator.Padding = zeroBounds
  266. s.Menu.Item.Separator.BorderColor = math32.Color4{0, 0, 0, 0}
  267. s.Menu.Item.Separator.BgColor = math32.Color4{0.6, 0.6, 0.6, 1}
  268. s.Menu.Item.Separator.FgColor = fgColor
  269. // Table styles
  270. s.Table = TableStyles{}
  271. s.Table.Header = TableHeaderStyle{}
  272. s.Table.Header.Border = RectBounds{0, 1, 1, 0}
  273. s.Table.Header.Padding = twoBounds
  274. s.Table.Header.BorderColor = borderColor
  275. s.Table.Header.BgColor = math32.Color4{0.7, 0.7, 0.7, 1}
  276. s.Table.Header.FgColor = fgColor
  277. s.Table.RowEven = TableRowStyle{}
  278. s.Table.RowEven.Border = RectBounds{0, 1, 1, 0}
  279. s.Table.RowEven.Padding = twoBounds
  280. s.Table.RowEven.BorderColor = math32.Color4{0.6, 0.6, 0.6, 1}
  281. s.Table.RowEven.BgColor = math32.Color4{0.90, 0.90, 0.90, 1}
  282. s.Table.RowEven.FgColor = fgColor
  283. s.Table.RowOdd = s.Table.RowEven
  284. s.Table.RowOdd.BgColor = math32.Color4{0.88, 0.88, 0.88, 1}
  285. s.Table.RowCursor = s.Table.RowEven
  286. s.Table.RowCursor.BgColor = math32.Color4{0.75, 0.75, 0.75, 1}
  287. s.Table.RowSel = s.Table.RowEven
  288. s.Table.RowSel.BgColor = math32.Color4{0.70, 0.70, 0.70, 1}
  289. s.Table.Status = TableStatusStyle{}
  290. s.Table.Status.Border = RectBounds{1, 0, 0, 0}
  291. s.Table.Status.Padding = twoBounds
  292. s.Table.Status.BorderColor = borderColor
  293. s.Table.Status.BgColor = math32.Color4{0.9, 0.9, 0.9, 1}
  294. s.Table.Status.FgColor = fgColor
  295. s.Table.Resizer = TableResizerStyle{
  296. Width: 4,
  297. Border: zeroBounds,
  298. BorderColor: borderColor,
  299. BgColor: math32.Color4{0.4, 0.4, 0.4, 0.6},
  300. }
  301. // ImageButton styles
  302. s.ImageButton = ImageButtonStyles{}
  303. s.ImageButton.Normal = ImageButtonStyle{}
  304. s.ImageButton.Normal.Border = oneBounds
  305. s.ImageButton.Normal.BorderColor = borderColor
  306. s.ImageButton.Normal.BgColor = bgColor4
  307. s.ImageButton.Normal.FgColor = fgColor
  308. s.ImageButton.Over = s.ImageButton.Normal
  309. s.ImageButton.Over.BgColor = bgColor4Over
  310. s.ImageButton.Focus = s.ImageButton.Over
  311. s.ImageButton.Pressed = s.ImageButton.Over
  312. s.ImageButton.Disabled = s.ImageButton.Normal
  313. s.ImageButton.Disabled.FgColor = fgColorDis
  314. // TabBar styles
  315. s.TabBar = TabBarStyles{
  316. SepHeight: 1,
  317. ListButtonIcon: icon.MoreVert,
  318. ListButtonPaddings: RectBounds{2, 4, 0, 0},
  319. }
  320. s.TabBar.Normal = TabBarStyle{}
  321. s.TabBar.Normal.Border = oneBounds
  322. s.TabBar.Normal.Padding = RectBounds{2, 0, 0, 0}
  323. s.TabBar.Normal.BorderColor = borderColor
  324. s.TabBar.Normal.BgColor = math32.Color4{0.7, 0.7, 0.7, 1}
  325. s.TabBar.Over = s.TabBar.Normal
  326. s.TabBar.Over.BgColor = bgColor4Over
  327. s.TabBar.Focus = s.TabBar.Normal
  328. s.TabBar.Focus.BgColor = bgColor4
  329. s.TabBar.Disabled = s.TabBar.Focus
  330. s.TabBar.Tab = TabStyles{
  331. IconPaddings: RectBounds{2, 2, 0, 0},
  332. ImagePaddings: RectBounds{0, 2, 0, 0},
  333. IconClose: icon.Clear,
  334. }
  335. s.TabBar.Tab.Normal = TabStyle{}
  336. s.TabBar.Tab.Normal.Margin = RectBounds{0, 2, 0, 2}
  337. s.TabBar.Tab.Normal.Border = RectBounds{1, 1, 0, 1}
  338. s.TabBar.Tab.Normal.Padding = twoBounds
  339. s.TabBar.Tab.Normal.BorderColor = borderColor
  340. s.TabBar.Tab.Normal.BgColor = bgColor4
  341. s.TabBar.Tab.Normal.FgColor = fgColor
  342. s.TabBar.Tab.Over = s.TabBar.Tab.Normal
  343. s.TabBar.Tab.Over.BgColor = bgColor4Over
  344. s.TabBar.Tab.Focus = s.TabBar.Tab.Normal
  345. s.TabBar.Tab.Focus.BgColor = bgColor4
  346. s.TabBar.Tab.Disabled = s.TabBar.Tab.Focus
  347. s.TabBar.Tab.Selected = s.TabBar.Tab.Normal
  348. s.TabBar.Tab.Selected.BgColor = math32.Color4{0.85, 0.85, 0.85, 1}
  349. return s
  350. }