style_light.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404
  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.Color{0.85, 0.85, 0.85}
  47. bgColor4 := math32.Color4{0, 0, 0, 0}
  48. bgColorOver := math32.Color{0.9, 0.9, 0.9}
  49. bgColor4Over := math32.Color4{1, 1, 1, 0.5}
  50. bgColor4Sel := math32.Color4{0.6, 0.6, 0.6, 1}
  51. fgColor := math32.Color{0, 0, 0}
  52. fgColorSel := math32.Color{0, 0, 0}
  53. fgColorDis := math32.Color{0.4, 0.4, 0.4}
  54. // Button styles
  55. s.Button = ButtonStyles{}
  56. s.Button.Normal = ButtonStyle{
  57. Border: oneBounds,
  58. Paddings: RectBounds{2, 4, 2, 4},
  59. BorderColor: borderColor,
  60. BgColor: bgColor,
  61. FgColor: fgColor,
  62. }
  63. s.Button.Over = s.Button.Normal
  64. s.Button.Over.BgColor = bgColorOver
  65. s.Button.Focus = s.Button.Over
  66. s.Button.Pressed = s.Button.Over
  67. s.Button.Pressed.Border = twoBounds
  68. s.Button.Disabled = s.Button.Normal
  69. s.Button.Disabled.BorderColor = borderColorDis
  70. s.Button.Disabled.FgColor = fgColorDis
  71. // CheckRadio styles
  72. s.CheckRadio = CheckRadioStyles{}
  73. s.CheckRadio.Normal = CheckRadioStyle{
  74. Border: zeroBounds,
  75. Paddings: zeroBounds,
  76. BorderColor: borderColor,
  77. BgColor: bgColor4,
  78. FgColor: fgColor,
  79. }
  80. s.CheckRadio.Over = s.CheckRadio.Normal
  81. s.CheckRadio.Over.BgColor = bgColor4Over
  82. s.CheckRadio.Focus = s.CheckRadio.Over
  83. s.CheckRadio.Disabled = s.CheckRadio.Normal
  84. s.CheckRadio.Disabled.FgColor = fgColorDis
  85. // Edit styles
  86. s.Edit = EditStyles{}
  87. s.Edit.Normal = EditStyle{
  88. Border: oneBounds,
  89. Paddings: zeroBounds,
  90. BorderColor: borderColor,
  91. BgColor: bgColor,
  92. BgAlpha: 1.0,
  93. FgColor: fgColor,
  94. HolderColor: math32.Color{0.4, 0.4, 0.4},
  95. }
  96. s.Edit.Over = s.Edit.Normal
  97. s.Edit.Over.BgColor = bgColorOver
  98. s.Edit.Focus = s.Edit.Over
  99. s.Edit.Disabled = s.Edit.Normal
  100. s.Edit.Disabled.FgColor = fgColorDis
  101. // ScrollBar styles
  102. s.ScrollBar = ScrollBarStyles{}
  103. s.ScrollBar.Normal = ScrollBarStyle{
  104. Paddings: oneBounds,
  105. Borders: oneBounds,
  106. BordersColor: borderColor,
  107. Color: math32.Color{0.8, 0.8, 0.8},
  108. Button: ScrollBarButtonStyle{
  109. Borders: oneBounds,
  110. BordersColor: borderColor,
  111. Color: math32.Color{0.5, 0.5, 0.5},
  112. Size: 30,
  113. },
  114. }
  115. s.ScrollBar.Over = s.ScrollBar.Normal
  116. s.ScrollBar.Disabled = s.ScrollBar.Normal
  117. // Slider styles
  118. s.Slider = SliderStyles{}
  119. s.Slider.Normal = SliderStyle{
  120. Border: oneBounds,
  121. BorderColor: borderColor,
  122. Paddings: zeroBounds,
  123. BgColor: math32.Color4{0.8, 0.8, 0.8, 1},
  124. FgColor: math32.Color4{0, 0.8, 0, 1},
  125. }
  126. s.Slider.Over = s.Slider.Normal
  127. s.Slider.Over.BgColor = math32.Color4{1, 1, 1, 1}
  128. s.Slider.Over.FgColor = math32.Color4{0, 1, 0, 1}
  129. s.Slider.Focus = s.Slider.Over
  130. s.Slider.Disabled = s.Slider.Normal
  131. // Splitter styles
  132. s.Splitter = SplitterStyles{}
  133. s.Splitter.Normal = SplitterStyle{
  134. SpacerBorderColor: borderColor,
  135. SpacerColor: bgColor,
  136. SpacerSize: 6,
  137. }
  138. s.Splitter.Over = s.Splitter.Normal
  139. s.Splitter.Over.SpacerColor = bgColorOver
  140. s.Splitter.Drag = s.Splitter.Over
  141. // Window styles
  142. s.Window = WindowStyles{}
  143. s.Window.Normal = WindowStyle{
  144. Border: RectBounds{4, 4, 4, 4},
  145. Paddings: zeroBounds,
  146. BorderColor: math32.Color4{0.2, 0.2, 0.2, 1},
  147. TitleBorders: RectBounds{0, 0, 1, 0},
  148. TitleBorderColor: math32.Color4{0, 0, 0, 1},
  149. TitleBgColor: math32.Color4{0, 1, 0, 1},
  150. TitleFgColor: math32.Color4{0, 0, 0, 1},
  151. }
  152. s.Window.Over = s.Window.Normal
  153. s.Window.Focus = s.Window.Normal
  154. s.Window.Disabled = s.Window.Normal
  155. // Scroller styles
  156. s.Scroller = ScrollerStyles{}
  157. s.Scroller.Normal = ScrollerStyle{
  158. Border: oneBounds,
  159. Paddings: zeroBounds,
  160. BorderColor: borderColor,
  161. BgColor: bgColor,
  162. FgColor: fgColor,
  163. }
  164. s.Scroller.Over = s.Scroller.Normal
  165. s.Scroller.Over.BgColor = bgColorOver
  166. s.Scroller.Focus = s.Scroller.Over
  167. s.Scroller.Disabled = s.Scroller.Normal
  168. // List styles
  169. s.List = ListStyles{}
  170. s.List.Scroller = &s.Scroller
  171. s.List.Item = &ListItemStyles{}
  172. s.List.Item.Normal = ListItemStyle{
  173. Border: RectBounds{1, 0, 1, 0},
  174. Paddings: RectBounds{0, 0, 0, 2},
  175. BorderColor: math32.Color4{0, 0, 0, 0},
  176. BgColor: bgColor4,
  177. FgColor: fgColor,
  178. }
  179. s.List.Item.Selected = s.List.Item.Normal
  180. s.List.Item.Selected.BgColor = bgColor4Sel
  181. s.List.Item.Selected.FgColor = fgColorSel
  182. s.List.Item.Highlighted = s.List.Item.Normal
  183. s.List.Item.Highlighted.BorderColor = math32.Color4{0, 0, 0, 1}
  184. s.List.Item.Highlighted.BgColor = bgColor4Over
  185. s.List.Item.Highlighted.FgColor = fgColor
  186. s.List.Item.SelHigh = s.List.Item.Highlighted
  187. s.List.Item.SelHigh.BgColor = bgColor4Sel
  188. s.List.Item.SelHigh.FgColor = fgColorSel
  189. // DropDown styles
  190. s.DropDown = DropDownStyles{}
  191. s.DropDown.Normal = DropDownStyle{
  192. Border: oneBounds,
  193. Paddings: RectBounds{0, 0, 0, 2},
  194. BorderColor: borderColor,
  195. BgColor: bgColor,
  196. FgColor: fgColor,
  197. }
  198. s.DropDown.Over = s.DropDown.Normal
  199. s.DropDown.Over.BgColor = bgColorOver
  200. s.DropDown.Focus = s.DropDown.Over
  201. s.DropDown.Disabled = s.DropDown.Normal
  202. // Folder styles
  203. s.Folder = FolderStyles{}
  204. s.Folder.Normal = FolderStyle{
  205. Margins: zeroBounds,
  206. Border: oneBounds,
  207. Paddings: RectBounds{2, 0, 2, 2},
  208. BorderColor: borderColor,
  209. BgColor: bgColor,
  210. FgColor: fgColor,
  211. Icons: [2]string{icon.ExpandMore, icon.ExpandLess},
  212. }
  213. s.Folder.Over = s.Folder.Normal
  214. s.Folder.Over.BgColor = bgColorOver
  215. s.Folder.Focus = s.Folder.Over
  216. s.Folder.Focus.Paddings = twoBounds
  217. s.Folder.Disabled = s.Folder.Focus
  218. // Tree styles
  219. s.Tree = TreeStyles{}
  220. s.Tree.Padlevel = 16.0
  221. s.Tree.List = &s.List
  222. s.Tree.Node = &TreeNodeStyles{}
  223. s.Tree.Node.Normal = TreeNodeStyle{
  224. Border: zeroBounds,
  225. Paddings: zeroBounds,
  226. BorderColor: borderColor,
  227. BgColor: bgColor4,
  228. FgColor: fgColor,
  229. Icons: [2]string{icon.ExpandMore, icon.ExpandLess},
  230. }
  231. // ControlFolder styles
  232. s.ControlFolder = ControlFolderStyles{}
  233. s.ControlFolder.Folder = &FolderStyles{}
  234. s.ControlFolder.Folder.Normal = s.Folder.Normal
  235. s.ControlFolder.Folder.Normal.BorderColor = math32.Color4{0, 0, 0, 0}
  236. s.ControlFolder.Folder.Normal.BgColor = math32.Color{0, 0.5, 1}
  237. s.ControlFolder.Folder.Over = s.ControlFolder.Folder.Normal
  238. s.ControlFolder.Folder.Focus = s.ControlFolder.Folder.Normal
  239. s.ControlFolder.Folder.Focus.Paddings = twoBounds
  240. s.ControlFolder.Folder.Disabled = s.ControlFolder.Folder.Focus
  241. s.ControlFolder.Tree = &TreeStyles{}
  242. s.ControlFolder.Tree.Padlevel = 2.0
  243. s.ControlFolder.Tree.List = &ListStyles{}
  244. scrollerStylesCopy := *s.List.Scroller
  245. s.ControlFolder.Tree.List.Scroller = &scrollerStylesCopy
  246. s.ControlFolder.Tree.List.Scroller.Normal.Paddings = RectBounds{0, 2, 0, 0}
  247. s.ControlFolder.Tree.List.Scroller.Over.Paddings = RectBounds{0, 2, 0, 0}
  248. s.ControlFolder.Tree.List.Scroller.Focus.Paddings = RectBounds{0, 2, 0, 0}
  249. s.ControlFolder.Tree.List.Scroller.Disabled.Paddings = RectBounds{0, 2, 0, 0}
  250. s.ControlFolder.Tree.List.Item = s.List.Item
  251. s.ControlFolder.Tree.Node = &TreeNodeStyles{}
  252. s.ControlFolder.Tree.Node.Normal = s.Tree.Node.Normal
  253. // Menu styles
  254. s.Menu = MenuStyles{}
  255. s.Menu.Body = &MenuBodyStyles{}
  256. s.Menu.Body.Normal = MenuBodyStyle{
  257. Border: oneBounds,
  258. Paddings: twoBounds,
  259. BorderColor: borderColor,
  260. BgColor: bgColor,
  261. FgColor: fgColor,
  262. }
  263. s.Menu.Body.Over = s.Menu.Body.Normal
  264. s.Menu.Body.Over.BgColor = bgColorOver
  265. s.Menu.Body.Focus = s.Menu.Body.Over
  266. s.Menu.Body.Disabled = s.Menu.Body.Normal
  267. s.Menu.Item = &MenuItemStyles{}
  268. s.Menu.Item.Normal = MenuItemStyle{
  269. Border: zeroBounds,
  270. Paddings: RectBounds{2, 4, 2, 2},
  271. BorderColor: borderColor,
  272. BgColor: bgColor,
  273. FgColor: fgColor,
  274. IconPaddings: RectBounds{0, 6, 0, 4},
  275. ShortcutPaddings: RectBounds{0, 0, 0, 10},
  276. RiconPaddings: RectBounds{2, 0, 0, 4},
  277. }
  278. s.Menu.Item.Over = s.Menu.Item.Normal
  279. s.Menu.Item.Over.BgColor = math32.Color{0.6, 0.6, 0.6}
  280. s.Menu.Item.Disabled = s.Menu.Item.Normal
  281. s.Menu.Item.Disabled.FgColor = fgColorDis
  282. s.Menu.Item.Separator = MenuItemStyle{
  283. Border: twoBounds,
  284. Paddings: zeroBounds,
  285. BorderColor: math32.Color4{0, 0, 0, 0},
  286. BgColor: math32.Color{0.6, 0.6, 0.6},
  287. FgColor: fgColor,
  288. }
  289. // Table styles
  290. s.Table = TableStyles{}
  291. s.Table.Header = TableHeaderStyle{
  292. Border: RectBounds{0, 1, 1, 0},
  293. Paddings: twoBounds,
  294. BorderColor: borderColor,
  295. BgColor: math32.Color{0.7, 0.7, 0.7},
  296. FgColor: fgColor,
  297. }
  298. s.Table.RowEven = TableRowStyle{
  299. Border: RectBounds{0, 1, 1, 0},
  300. Paddings: twoBounds,
  301. BorderColor: math32.Color4{0.6, 0.6, 0.6, 1},
  302. BgColor: math32.Color{0.90, 0.90, 0.90},
  303. FgColor: fgColor,
  304. }
  305. s.Table.RowOdd = s.Table.RowEven
  306. s.Table.RowOdd.BgColor = math32.Color{0.88, 0.88, 0.88}
  307. s.Table.RowCursor = s.Table.RowEven
  308. s.Table.RowCursor.BgColor = math32.Color{0.75, 0.75, 0.75}
  309. s.Table.RowSel = s.Table.RowEven
  310. s.Table.RowSel.BgColor = math32.Color{0.70, 0.70, 0.70}
  311. s.Table.Status = TableStatusStyle{
  312. Border: RectBounds{1, 0, 0, 0},
  313. Paddings: twoBounds,
  314. BorderColor: borderColor,
  315. BgColor: math32.Color{0.9, 0.9, 0.9},
  316. FgColor: fgColor,
  317. }
  318. s.Table.Resizer = TableResizerStyle{
  319. Width: 4,
  320. Border: zeroBounds,
  321. BorderColor: borderColor,
  322. BgColor: math32.Color4{0.4, 0.4, 0.4, 0.6},
  323. }
  324. // ImageButton styles
  325. s.ImageButton = ImageButtonStyles{}
  326. s.ImageButton.Normal = ImageButtonStyle{
  327. Border: oneBounds,
  328. Paddings: zeroBounds,
  329. BorderColor: borderColor,
  330. BgColor: bgColor4,
  331. FgColor: fgColor,
  332. }
  333. s.ImageButton.Over = s.ImageButton.Normal
  334. s.ImageButton.Over.BgColor = bgColor4Over
  335. s.ImageButton.Focus = s.ImageButton.Over
  336. s.ImageButton.Pressed = s.ImageButton.Over
  337. s.ImageButton.Disabled = s.ImageButton.Normal
  338. s.ImageButton.Disabled.FgColor = fgColorDis
  339. // TabBar styles
  340. s.TabBar = TabBarStyles{
  341. SepHeight: 1,
  342. ListButtonIcon: icon.MoreVert,
  343. ListButtonPaddings: RectBounds{2, 4, 0, 0},
  344. }
  345. s.TabBar.Normal = TabBarStyle{
  346. Border: oneBounds,
  347. Paddings: RectBounds{2, 0, 0, 0},
  348. BorderColor: borderColor,
  349. BgColor: math32.Color4{0.7, 0.7, 0.7, 1},
  350. }
  351. s.TabBar.Over = s.TabBar.Normal
  352. s.TabBar.Over.BgColor = bgColor4Over
  353. s.TabBar.Focus = s.TabBar.Normal
  354. s.TabBar.Focus.BgColor = bgColor4
  355. s.TabBar.Disabled = s.TabBar.Focus
  356. s.TabBar.Tab = TabStyles{
  357. IconPaddings: RectBounds{2, 2, 0, 0},
  358. ImagePaddings: RectBounds{0, 2, 0, 0},
  359. IconClose: icon.Clear,
  360. }
  361. s.TabBar.Tab.Normal = TabStyle{
  362. Margins: RectBounds{0, 2, 0, 2},
  363. Border: RectBounds{1, 1, 0, 1},
  364. Paddings: twoBounds,
  365. BorderColor: borderColor,
  366. BgColor: bgColor4,
  367. FgColor: fgColor,
  368. }
  369. s.TabBar.Tab.Over = s.TabBar.Tab.Normal
  370. s.TabBar.Tab.Over.BgColor = bgColor4Over
  371. s.TabBar.Tab.Focus = s.TabBar.Tab.Normal
  372. s.TabBar.Tab.Focus.BgColor = bgColor4
  373. s.TabBar.Tab.Disabled = s.TabBar.Tab.Focus
  374. s.TabBar.Tab.Selected = s.TabBar.Tab.Normal
  375. s.TabBar.Tab.Selected.BgColor = math32.Color4{0.85, 0.85, 0.85, 1}
  376. return s
  377. }