style_dark.go 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402
  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. // NewDarkStyle creates and returns a pointer to the a new "dark" style
  12. func NewDarkStyle() *Style {
  13. // Fonts to use
  14. const textFont = "fonts/FreeSans.ttf"
  15. const iconFont = "fonts/MaterialIcons-Regular.ttf"
  16. s := new(Style)
  17. // Creates text font
  18. fontData := assets.MustAsset(textFont)
  19. font, err := text.NewFontFromData(fontData)
  20. if err != nil {
  21. panic(err)
  22. }
  23. s.Font = font
  24. // Creates icon font
  25. fontIconData := assets.MustAsset(iconFont)
  26. fontIcon, err := text.NewFontFromData(fontIconData)
  27. if err != nil {
  28. panic(err)
  29. }
  30. s.FontIcon = fontIcon
  31. zeroBounds := RectBounds{0, 0, 0, 0}
  32. oneBounds := RectBounds{1, 1, 1, 1}
  33. twoBounds := RectBounds{2, 2, 2, 2}
  34. s.Color.BgDark = math32.Color4{43.0 / 256.0, 43.0 / 256.0, 43.0 / 256.0, 1}
  35. s.Color.BgMed = math32.Color4{49.0 / 256.0, 51.0 / 256.0, 53.0 / 256.0, 1}
  36. s.Color.BgNormal = math32.Color4{60.0 / 256.0, 63.0 / 256.0, 65.0 / 256.0, 1}
  37. s.Color.BgOver = math32.Color4{70.0 / 256.0, 74.0 / 256.0, 77.0 / 256.0, 1}
  38. s.Color.Highlight = math32.Color4{75.0 / 256.0, 110.0 / 256.0, 175.0 / 256.0, 1}
  39. s.Color.Select = math32.Color4{13.0 / 256.0, 41.0 / 256.0, 62.0 / 256.0, 1}
  40. s.Color.Text = math32.Color4{1, 1, 1, 1}
  41. s.Color.TextDis = math32.Color4{0.4, 0.4, 0.4, 1}
  42. borderColor := s.Color.BgDark
  43. transparent := math32.Color4{0, 0, 0, 0}
  44. //bgColorBlue := math32.Color4{59.0/256.0, 71.0/256.0, 84.0/256.0, 1}
  45. //bgColorBlue2 := math32.Color4{59.0/256.0, 71.0/256.0, 120.0/256.0, 1}
  46. //bgColorBlueDark := math32.Color4{49.0/256.0, 59.0/256.0, 69.0/256.0, 1}
  47. //bgColorGrey := math32.Color4{85.0/256.0, 85.0/256.0, 85.0/256.0, 1}
  48. //bgColorOld := math32.Color4{0.85, 0.85, 0.85, 1}
  49. // Label style
  50. s.Label = LabelStyle{}
  51. s.Label.FontAttributes = text.FontAttributes{}
  52. s.Label.FontAttributes.PointSize = 14
  53. s.Label.FontAttributes.DPI = 72
  54. s.Label.FontAttributes.Hinting = text.HintingNone
  55. s.Label.FontAttributes.LineSpacing = 1.0
  56. s.Label.BgColor = math32.Color4{1, 1, 1, 0}
  57. s.Label.FgColor = math32.Color4{1, 1, 1, 1}
  58. // Button styles
  59. s.Button = ButtonStyles{}
  60. s.Button.Normal = ButtonStyle{}
  61. s.Button.Normal.Border = oneBounds
  62. s.Button.Normal.Padding = RectBounds{2, 4, 2, 4}
  63. s.Button.Normal.BorderColor = s.Color.BgDark
  64. s.Button.Normal.BgColor = s.Color.BgMed
  65. s.Button.Normal.FgColor = s.Color.Text
  66. s.Button.Over = s.Button.Normal
  67. s.Button.Over.BgColor = s.Color.BgOver
  68. s.Button.Focus = s.Button.Over
  69. s.Button.Pressed = s.Button.Over
  70. s.Button.Pressed.Border = RectBounds{2, 2, 2, 2}
  71. s.Button.Pressed.Padding = RectBounds{2, 2, 0, 4}
  72. s.Button.Disabled = s.Button.Normal
  73. s.Button.Disabled.BorderColor = s.Color.TextDis
  74. s.Button.Disabled.FgColor = s.Color.TextDis
  75. // CheckRadio styles
  76. s.CheckRadio = CheckRadioStyles{}
  77. s.CheckRadio.Normal = CheckRadioStyle{}
  78. s.CheckRadio.Normal.BorderColor = borderColor
  79. s.CheckRadio.Normal.BgColor = transparent
  80. s.CheckRadio.Normal.FgColor = s.Color.Text
  81. s.CheckRadio.Over = s.CheckRadio.Normal
  82. s.CheckRadio.Over.BgColor = s.Color.BgOver
  83. s.CheckRadio.Focus = s.CheckRadio.Over
  84. s.CheckRadio.Disabled = s.CheckRadio.Normal
  85. s.CheckRadio.Disabled.FgColor = s.Color.TextDis
  86. // Edit styles
  87. s.Edit = EditStyles{}
  88. s.Edit.Normal = EditStyle{
  89. Border: oneBounds,
  90. Paddings: zeroBounds,
  91. BorderColor: borderColor,
  92. BgColor: s.Color.BgMed,
  93. BgAlpha: 1.0,
  94. FgColor: s.Color.Text,
  95. HolderColor: math32.Color4{0.4, 0.4, 0.4, 1},
  96. }
  97. s.Edit.Over = s.Edit.Normal
  98. s.Edit.Over.BgColor = s.Color.BgNormal
  99. s.Edit.Focus = s.Edit.Normal
  100. s.Edit.Disabled = s.Edit.Normal
  101. s.Edit.Disabled.FgColor = s.Color.TextDis
  102. // ScrollBar styles
  103. s.ScrollBar = ScrollBarStyles{}
  104. s.ScrollBar.Normal = ScrollBarStyle{}
  105. s.ScrollBar.Normal.Padding = oneBounds
  106. s.ScrollBar.Normal.BgColor = math32.Color4{0, 0, 0, 0.2}
  107. s.ScrollBar.Normal.ButtonLength = 32
  108. s.ScrollBar.Normal.Button = PanelStyle{
  109. BgColor: math32.Color4{0.8, 0.8, 0.8, 0.5},
  110. }
  111. s.ScrollBar.Over = s.ScrollBar.Normal
  112. s.ScrollBar.Disabled = s.ScrollBar.Normal
  113. // Slider styles
  114. s.Slider = SliderStyles{}
  115. s.Slider.Normal = SliderStyle{}
  116. s.Slider.Normal.Border = oneBounds
  117. s.Slider.Normal.BorderColor = borderColor
  118. s.Slider.Normal.BgColor = s.Color.BgDark
  119. s.Slider.Normal.FgColor = s.Color.Highlight //bgColorBlue2 //math32.Color4{0, 0.4, 0, 1}
  120. s.Slider.Normal.FgColor.A = 0.5
  121. s.Slider.Over = s.Slider.Normal
  122. s.Slider.Over.BgColor = s.Color.BgNormal
  123. s.Slider.Over.FgColor = s.Color.Highlight //math32.Color4{0, 0.5, 0, 1}
  124. s.Slider.Focus = s.Slider.Over
  125. s.Slider.Disabled = s.Slider.Normal
  126. // Splitter styles
  127. s.Splitter = SplitterStyles{}
  128. s.Splitter.Normal = SplitterStyle{
  129. SpacerBorderColor: borderColor,
  130. SpacerColor: s.Color.BgNormal,
  131. SpacerSize: 6,
  132. }
  133. s.Splitter.Over = s.Splitter.Normal
  134. s.Splitter.Over.SpacerColor = s.Color.BgOver
  135. s.Splitter.Drag = s.Splitter.Over
  136. // Window styles
  137. s.Window = WindowStyles{}
  138. s.Window.Normal = WindowStyle{}
  139. s.Window.Normal.Border = RectBounds{2, 2, 2, 2}
  140. s.Window.Normal.Padding = zeroBounds
  141. s.Window.Normal.BorderColor = s.Color.BgDark
  142. s.Window.Normal.TitleStyle = WindowTitleStyle{}
  143. s.Window.Normal.TitleStyle.Border = RectBounds{0, 0, 1, 0}
  144. s.Window.Normal.TitleStyle.BorderColor = math32.Color4{0, 0, 0, 1}
  145. s.Window.Normal.TitleStyle.BgColor = s.Color.Select
  146. s.Window.Normal.TitleStyle.FgColor = s.Color.Text
  147. s.Window.Over = s.Window.Normal
  148. s.Window.Focus = s.Window.Normal
  149. s.Window.Disabled = s.Window.Normal
  150. // ItemScroller styles
  151. s.Scroller = ScrollerStyle{}
  152. s.Scroller.VerticalScrollbar = ScrollerScrollbarStyle{}
  153. s.Scroller.VerticalScrollbar.ScrollBarStyle = s.ScrollBar.Normal
  154. s.Scroller.VerticalScrollbar.Broadness = 12
  155. s.Scroller.VerticalScrollbar.Position = ScrollbarRight
  156. s.Scroller.VerticalScrollbar.OverlapContent = true
  157. s.Scroller.VerticalScrollbar.AutoSizeButton = true
  158. s.Scroller.HorizontalScrollbar = s.Scroller.VerticalScrollbar
  159. s.Scroller.HorizontalScrollbar.Position = ScrollbarBottom
  160. s.Scroller.ScrollbarInterlocking = ScrollbarInterlockingNone
  161. s.Scroller.CornerCovered = true
  162. s.Scroller.CornerPanel = PanelStyle{}
  163. s.Scroller.CornerPanel.BgColor = math32.Color4{0, 0, 0, 0.2}
  164. s.Scroller.Border = oneBounds
  165. s.Scroller.BorderColor = borderColor
  166. s.Scroller.BgColor = s.Color.BgNormal
  167. // ItemScroller styles
  168. s.ItemScroller = ItemScrollerStyles{}
  169. s.ItemScroller.Normal = ItemScrollerStyle{}
  170. s.ItemScroller.Normal.Border = oneBounds
  171. s.ItemScroller.Normal.BorderColor = borderColor
  172. s.ItemScroller.Normal.BgColor = s.Color.BgNormal
  173. s.ItemScroller.Normal.FgColor = s.Color.Text
  174. s.ItemScroller.Over = s.ItemScroller.Normal
  175. //s.ItemScroller.Over.BgColor = bgColorOver
  176. s.ItemScroller.Focus = s.ItemScroller.Over
  177. s.ItemScroller.Disabled = s.ItemScroller.Normal
  178. // ItemList styles
  179. s.List = ListStyles{}
  180. s.List.Scroller = &s.ItemScroller
  181. s.List.Item = &ListItemStyles{}
  182. s.List.Item.Normal = ListItemStyle{}
  183. s.List.Item.Normal.Border = RectBounds{0, 0, 1, 0}
  184. s.List.Item.Normal.Padding = RectBounds{0, 0, 0, 2}
  185. s.List.Item.Normal.BorderColor = math32.Color4{0, 0, 0, 0}
  186. s.List.Item.Normal.BgColor = transparent
  187. s.List.Item.Normal.FgColor = s.Color.Text
  188. s.List.Item.Over = s.List.Item.Normal
  189. s.List.Item.Over.BgColor = s.Color.BgOver
  190. s.List.Item.Over.FgColor = s.Color.Select
  191. s.List.Item.Selected = s.List.Item.Normal
  192. s.List.Item.Selected.BgColor = s.Color.Highlight
  193. s.List.Item.Selected.FgColor = s.Color.Select
  194. s.List.Item.Highlighted = s.List.Item.Normal
  195. s.List.Item.Highlighted.BorderColor = math32.Color4{0, 0, 0, 1}
  196. s.List.Item.Highlighted.BgColor = s.Color.BgOver
  197. s.List.Item.Highlighted.FgColor = s.Color.Text
  198. s.List.Item.SelHigh = s.List.Item.Highlighted
  199. s.List.Item.SelHigh.BgColor = s.Color.BgNormal
  200. s.List.Item.SelHigh.FgColor = s.Color.Select
  201. // DropDown styles
  202. s.DropDown = DropDownStyles{}
  203. s.DropDown.Normal = DropDownStyle{}
  204. s.DropDown.Normal.Border = oneBounds
  205. s.DropDown.Normal.Padding = RectBounds{0, 0, 0, 2}
  206. s.DropDown.Normal.BorderColor = borderColor
  207. s.DropDown.Normal.BgColor = s.Color.BgNormal
  208. s.DropDown.Normal.FgColor = s.Color.Text
  209. s.DropDown.Over = s.DropDown.Normal
  210. s.DropDown.Over.BgColor = s.Color.BgOver
  211. s.DropDown.Focus = s.DropDown.Over
  212. s.DropDown.Disabled = s.DropDown.Normal
  213. // Folder styles
  214. s.Folder = FolderStyles{}
  215. s.Folder.Normal = FolderStyle{}
  216. s.Folder.Normal.Border = oneBounds
  217. s.Folder.Normal.Padding = RectBounds{2, 0, 2, 2}
  218. s.Folder.Normal.BorderColor = borderColor
  219. s.Folder.Normal.BgColor = s.Color.BgNormal
  220. s.Folder.Normal.FgColor = s.Color.Text
  221. s.Folder.Normal.Icons = [2]string{icon.ExpandMore, icon.ExpandLess}
  222. s.Folder.Over = s.Folder.Normal
  223. s.Folder.Over.BgColor = s.Color.BgOver
  224. s.Folder.Focus = s.Folder.Over
  225. s.Folder.Focus.Padding = twoBounds
  226. s.Folder.Disabled = s.Folder.Focus
  227. // Tree styles
  228. s.Tree = TreeStyles{}
  229. s.Tree.Padlevel = 28.0
  230. s.Tree.List = &s.List
  231. s.Tree.Node = &TreeNodeStyles{}
  232. s.Tree.Node.Normal = TreeNodeStyle{}
  233. s.Tree.Node.Normal.BorderColor = borderColor
  234. s.Tree.Node.Normal.BgColor = transparent
  235. s.Tree.Node.Normal.FgColor = s.Color.Text
  236. s.Tree.Node.Normal.Icons = [2]string{icon.ExpandMore, icon.ExpandLess}
  237. // ControlFolder styles
  238. s.ControlFolder = ControlFolderStyles{}
  239. s.ControlFolder.Folder = &FolderStyles{}
  240. s.ControlFolder.Folder.Normal = s.Folder.Normal
  241. s.ControlFolder.Folder.Normal.BorderColor = math32.Color4{0, 0, 0, 0}
  242. s.ControlFolder.Folder.Normal.BgColor = math32.Color4{0, 0.5, 1, 1}
  243. s.ControlFolder.Folder.Over = s.ControlFolder.Folder.Normal
  244. s.ControlFolder.Folder.Focus = s.ControlFolder.Folder.Normal
  245. s.ControlFolder.Folder.Focus.Padding = twoBounds
  246. s.ControlFolder.Folder.Disabled = s.ControlFolder.Folder.Focus
  247. s.ControlFolder.Tree = &TreeStyles{}
  248. s.ControlFolder.Tree.Padlevel = 2.0
  249. s.ControlFolder.Tree.List = &ListStyles{}
  250. scrollerStylesCopy := *s.List.Scroller
  251. s.ControlFolder.Tree.List.Scroller = &scrollerStylesCopy
  252. s.ControlFolder.Tree.List.Scroller.Normal.Padding = RectBounds{0, 2, 0, 0}
  253. s.ControlFolder.Tree.List.Scroller.Over.Padding = RectBounds{0, 2, 0, 0}
  254. s.ControlFolder.Tree.List.Scroller.Focus.Padding = RectBounds{0, 2, 0, 0}
  255. s.ControlFolder.Tree.List.Scroller.Disabled.Padding = RectBounds{0, 2, 0, 0}
  256. s.ControlFolder.Tree.List.Item = s.List.Item
  257. s.ControlFolder.Tree.Node = &TreeNodeStyles{}
  258. s.ControlFolder.Tree.Node.Normal = s.Tree.Node.Normal
  259. // Menu styles
  260. s.Menu = MenuStyles{}
  261. s.Menu.Body = &MenuBodyStyles{}
  262. s.Menu.Body.Normal = MenuBodyStyle{}
  263. s.Menu.Body.Normal.Border = oneBounds
  264. s.Menu.Body.Normal.Padding = twoBounds
  265. s.Menu.Body.Normal.BorderColor = borderColor
  266. s.Menu.Body.Normal.BgColor = s.Color.BgNormal
  267. s.Menu.Body.Normal.FgColor = s.Color.Text
  268. s.Menu.Body.Over = s.Menu.Body.Normal
  269. s.Menu.Body.Over.BgColor = s.Color.BgOver
  270. s.Menu.Body.Focus = s.Menu.Body.Over
  271. s.Menu.Body.Disabled = s.Menu.Body.Normal
  272. s.Menu.Item = &MenuItemStyles{}
  273. s.Menu.Item.Normal = MenuItemStyle{}
  274. s.Menu.Item.Normal.Padding = RectBounds{2, 4, 2, 2}
  275. s.Menu.Item.Normal.BorderColor = borderColor
  276. s.Menu.Item.Normal.BgColor = s.Color.BgNormal
  277. s.Menu.Item.Normal.FgColor = s.Color.Text
  278. s.Menu.Item.Normal.IconPaddings = RectBounds{0, 6, 0, 4}
  279. s.Menu.Item.Normal.ShortcutPaddings = RectBounds{0, 0, 0, 10}
  280. s.Menu.Item.Normal.RiconPaddings = RectBounds{2, 0, 0, 4}
  281. s.Menu.Item.Over = s.Menu.Item.Normal
  282. s.Menu.Item.Over.BgColor = s.Color.Highlight
  283. s.Menu.Item.Disabled = s.Menu.Item.Normal
  284. s.Menu.Item.Disabled.FgColor = s.Color.TextDis
  285. s.Menu.Item.Separator = MenuItemStyle{}
  286. s.Menu.Item.Separator.Border = twoBounds
  287. s.Menu.Item.Separator.Padding = zeroBounds
  288. s.Menu.Item.Separator.BorderColor = math32.Color4{0, 0, 0, 0}
  289. s.Menu.Item.Separator.BgColor = math32.Color4{0.6, 0.6, 0.6, 1}
  290. s.Menu.Item.Separator.FgColor = s.Color.Text
  291. // Table styles
  292. s.Table = TableStyles{}
  293. s.Table.Header = TableHeaderStyle{}
  294. s.Table.Header.Border = RectBounds{0, 1, 1, 0}
  295. s.Table.Header.Padding = twoBounds
  296. s.Table.Header.BorderColor = s.Color.BgNormal
  297. s.Table.Header.BgColor = s.Color.BgDark
  298. s.Table.Header.FgColor = s.Color.Text
  299. s.Table.RowEven = TableRowStyle{}
  300. s.Table.RowEven.Border = RectBounds{0, 1, 1, 0}
  301. s.Table.RowEven.Padding = twoBounds
  302. s.Table.RowEven.BorderColor = s.Color.BgDark
  303. s.Table.RowEven.BgColor = s.Color.BgNormal
  304. s.Table.RowEven.FgColor = s.Color.Text
  305. s.Table.RowOdd = s.Table.RowEven
  306. s.Table.RowOdd.BgColor = s.Color.BgMed
  307. s.Table.RowCursor = s.Table.RowEven
  308. s.Table.RowCursor.BgColor = s.Color.Highlight
  309. s.Table.RowSel = s.Table.RowEven
  310. s.Table.RowSel.BgColor = s.Color.Select
  311. s.Table.Status = TableStatusStyle{}
  312. s.Table.Status.Border = RectBounds{1, 0, 0, 0}
  313. s.Table.Status.Padding = twoBounds
  314. s.Table.Status.BorderColor = borderColor
  315. s.Table.Status.BgColor = s.Color.BgDark
  316. s.Table.Status.FgColor = s.Color.Text
  317. s.Table.Resizer = TableResizerStyle{
  318. Width: 4,
  319. Border: zeroBounds,
  320. BorderColor: borderColor,
  321. BgColor: math32.Color4{0.4, 0.4, 0.4, 0.6},
  322. }
  323. // ImageButton styles
  324. s.ImageButton = ImageButtonStyles{}
  325. s.ImageButton.Normal = ImageButtonStyle{}
  326. s.ImageButton.Normal.BgColor = transparent
  327. s.ImageButton.Normal.FgColor = s.Color.Text
  328. s.ImageButton.Over = s.ImageButton.Normal
  329. s.ImageButton.Over.BgColor = s.Color.BgOver
  330. s.ImageButton.Focus = s.ImageButton.Over
  331. s.ImageButton.Pressed = s.ImageButton.Over
  332. s.ImageButton.Pressed.Border = oneBounds
  333. s.ImageButton.Disabled = s.ImageButton.Normal
  334. s.ImageButton.Disabled.FgColor = s.Color.TextDis
  335. // TabBar styles
  336. s.TabBar = TabBarStyles{
  337. SepHeight: 1,
  338. ListButtonIcon: icon.MoreVert,
  339. ListButtonPaddings: RectBounds{2, 4, 0, 0},
  340. }
  341. s.TabBar.Normal = TabBarStyle{}
  342. s.TabBar.Normal.Border = oneBounds
  343. s.TabBar.Normal.Padding = RectBounds{2, 0, 0, 0}
  344. s.TabBar.Normal.BorderColor = borderColor
  345. s.TabBar.Normal.BgColor = s.Color.BgMed
  346. s.TabBar.Over = s.TabBar.Normal
  347. //s.TabBar.Over.BgColor = s.Color.BgOver
  348. s.TabBar.Focus = s.TabBar.Normal
  349. s.TabBar.Focus.BgColor = transparent
  350. s.TabBar.Disabled = s.TabBar.Focus
  351. s.TabBar.Tab = TabStyles{
  352. IconPaddings: RectBounds{2, 2, 0, 0},
  353. ImagePaddings: RectBounds{0, 2, 0, 0},
  354. IconClose: icon.Clear,
  355. }
  356. s.TabBar.Tab.Normal = TabStyle{}
  357. s.TabBar.Tab.Normal.Margin = RectBounds{0, 2, 0, 2}
  358. s.TabBar.Tab.Normal.Border = RectBounds{1, 1, 0, 1}
  359. s.TabBar.Tab.Normal.Padding = twoBounds
  360. s.TabBar.Tab.Normal.BorderColor = borderColor
  361. s.TabBar.Tab.Normal.BgColor = s.Color.BgNormal
  362. s.TabBar.Tab.Normal.FgColor = s.Color.Text
  363. s.TabBar.Tab.Over = s.TabBar.Tab.Normal
  364. s.TabBar.Tab.Over.BgColor = s.Color.BgOver
  365. s.TabBar.Tab.Focus = s.TabBar.Tab.Normal
  366. s.TabBar.Tab.Focus.BgColor = transparent
  367. s.TabBar.Tab.Disabled = s.TabBar.Tab.Focus
  368. s.TabBar.Tab.Selected = s.TabBar.Tab.Normal
  369. s.TabBar.Tab.Selected.BgColor = s.Color.BgOver
  370. return s
  371. }