style.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745
  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/math32"
  8. "github.com/g3n/engine/text"
  9. )
  10. func init() {
  11. setupDefaultStyle()
  12. }
  13. // Pointer to default style
  14. var StyleDefault *Style
  15. // All styles
  16. type Style struct {
  17. Font *text.Font
  18. FontIcon *text.Font
  19. Button ButtonStyles
  20. CheckRadio CheckRadioStyles
  21. Edit EditStyles
  22. ScrollBar ScrollBarStyle
  23. Slider SliderStyles
  24. Splitter SplitterStyles
  25. Window WindowStyles
  26. Scroller ScrollerStyles
  27. List ListStyles
  28. DropDown DropDownStyles
  29. Folder FolderStyles
  30. Tree TreeStyles
  31. ControlFolder ControlFolderStyles
  32. Menu MenuStyles
  33. }
  34. const (
  35. defaultFont = "fonts/FreeSans.ttf"
  36. defaultFontBold = "fonts/FreeSansBold.ttf"
  37. defaultFontIcon = "fonts/MaterialIcons-Regular.ttf"
  38. )
  39. const (
  40. OverStyle = iota + 1
  41. FocusStyle
  42. DisabledStyle
  43. NormalStyle
  44. DefaultStyle
  45. )
  46. // setupDefaultStyle initializes the default Gui global styles
  47. func setupDefaultStyle() {
  48. StyleDefault = &Style{}
  49. // Creates Default Font
  50. fontData := assets.MustAsset(defaultFont)
  51. font, err := text.NewFontFromData(fontData)
  52. if err != nil {
  53. panic(err)
  54. }
  55. font.SetLineSpacing(1.0)
  56. font.SetSize(14)
  57. font.SetDPI(72)
  58. font.SetFgColor4(&math32.Color4{0, 0, 0, 1})
  59. font.SetBgColor4(&math32.Color4{1, 1, 1, 0})
  60. StyleDefault.Font = font
  61. // Creates Icon Font
  62. fontIconData := assets.MustAsset(defaultFontIcon)
  63. fontIcon, err := text.NewFontFromData(fontIconData)
  64. if err != nil {
  65. panic(err)
  66. }
  67. fontIcon.SetLineSpacing(1.0)
  68. fontIcon.SetSize(14)
  69. fontIcon.SetDPI(72)
  70. fontIcon.SetFgColor4(&math32.Color4{0, 0, 0, 1})
  71. fontIcon.SetBgColor4(&math32.Color4{1, 1, 1, 1})
  72. StyleDefault.FontIcon = fontIcon
  73. borderSizes := BorderSizes{1, 1, 1, 1}
  74. borderColor := math32.Color4{0, 0, 0, 1}
  75. borderColorDis := math32.Color4{0.4, 0.4, 0.4, 1}
  76. bgColor := math32.Color{0.85, 0.85, 0.85}
  77. bgColor4 := math32.Color4{0, 0, 0, 0}
  78. bgColorOver := math32.Color{0.9, 0.9, 0.9}
  79. bgColor4Over := math32.Color4{1, 1, 1, 0.5}
  80. bgColor4Sel := math32.Color4{0.6, 0.6, 0.6, 1}
  81. fgColor := math32.Color{0, 0, 0}
  82. fgColorSel := math32.Color{0, 0, 0}
  83. fgColorDis := math32.Color{0.4, 0.4, 0.4}
  84. // Button styles
  85. StyleDefault.Button = ButtonStyles{
  86. Normal: ButtonStyle{
  87. Border: borderSizes,
  88. Paddings: BorderSizes{2, 4, 2, 4},
  89. BorderColor: borderColor,
  90. BgColor: bgColor,
  91. FgColor: fgColor,
  92. },
  93. Over: ButtonStyle{
  94. Border: borderSizes,
  95. Paddings: BorderSizes{2, 4, 2, 4},
  96. BorderColor: borderColor,
  97. BgColor: bgColorOver,
  98. FgColor: fgColor,
  99. },
  100. Focus: ButtonStyle{
  101. Border: borderSizes,
  102. Paddings: BorderSizes{2, 4, 2, 4},
  103. BorderColor: borderColor,
  104. BgColor: bgColorOver,
  105. FgColor: fgColor,
  106. },
  107. Pressed: ButtonStyle{
  108. Border: BorderSizes{2, 2, 2, 2},
  109. Paddings: BorderSizes{2, 4, 2, 4},
  110. BorderColor: borderColor,
  111. BgColor: bgColorOver,
  112. FgColor: fgColor,
  113. },
  114. Disabled: ButtonStyle{
  115. Border: borderSizes,
  116. Paddings: BorderSizes{2, 4, 2, 4},
  117. BorderColor: borderColorDis,
  118. BgColor: bgColor,
  119. FgColor: fgColorDis,
  120. },
  121. }
  122. // CheckRadio styles
  123. StyleDefault.CheckRadio = CheckRadioStyles{
  124. Normal: CheckRadioStyle{
  125. Border: BorderSizes{0, 0, 0, 0},
  126. Paddings: BorderSizes{0, 0, 0, 0},
  127. BorderColor: borderColor,
  128. BgColor: bgColor4,
  129. FgColor: fgColor,
  130. },
  131. Over: CheckRadioStyle{
  132. Border: BorderSizes{0, 0, 0, 0},
  133. Paddings: BorderSizes{0, 0, 0, 0},
  134. BorderColor: borderColor,
  135. BgColor: bgColor4Over,
  136. FgColor: fgColor,
  137. },
  138. Focus: CheckRadioStyle{
  139. Border: BorderSizes{0, 0, 0, 0},
  140. Paddings: BorderSizes{0, 0, 0, 0},
  141. BorderColor: borderColor,
  142. BgColor: bgColor4Over,
  143. FgColor: fgColor,
  144. },
  145. Disabled: CheckRadioStyle{
  146. Border: BorderSizes{0, 0, 0, 0},
  147. Paddings: BorderSizes{0, 0, 0, 0},
  148. BorderColor: borderColor,
  149. BgColor: bgColor4,
  150. FgColor: fgColorDis,
  151. },
  152. }
  153. // Edit styles
  154. StyleDefault.Edit = EditStyles{
  155. Normal: EditStyle{
  156. Border: BorderSizes{1, 1, 1, 1},
  157. Paddings: BorderSizes{0, 0, 0, 0},
  158. BorderColor: borderColor,
  159. BgColor: bgColor,
  160. BgAlpha: 1.0,
  161. FgColor: fgColor,
  162. HolderColor: math32.Color{0.4, 0.4, 0.4},
  163. },
  164. Over: EditStyle{
  165. Border: BorderSizes{1, 1, 1, 1},
  166. Paddings: BorderSizes{0, 0, 0, 0},
  167. BorderColor: borderColor,
  168. BgColor: bgColorOver,
  169. BgAlpha: 1.0,
  170. FgColor: fgColor,
  171. HolderColor: math32.Color{0.4, 0.4, 0.4},
  172. },
  173. Focus: EditStyle{
  174. Border: BorderSizes{1, 1, 1, 1},
  175. Paddings: BorderSizes{0, 0, 0, 0},
  176. BorderColor: borderColor,
  177. BgColor: bgColorOver,
  178. BgAlpha: 1.0,
  179. FgColor: fgColor,
  180. HolderColor: math32.Color{0.4, 0.4, 0.4},
  181. },
  182. Disabled: EditStyle{
  183. Border: BorderSizes{1, 1, 1, 1},
  184. Paddings: BorderSizes{0, 0, 0, 0},
  185. BorderColor: borderColor,
  186. BgColor: bgColor,
  187. BgAlpha: 1.0,
  188. FgColor: fgColorDis,
  189. HolderColor: math32.Color{0.4, 0.4, 0.4},
  190. },
  191. }
  192. // ScrollBar style
  193. StyleDefault.ScrollBar = ScrollBarStyle{
  194. Paddings: BorderSizes{1, 1, 1, 1},
  195. Borders: BorderSizes{1, 1, 1, 1},
  196. BordersColor: borderColor,
  197. Color: math32.Color{0.8, 0.8, 0.8},
  198. Button: ScrollBarButtonStyle{
  199. Borders: BorderSizes{1, 1, 1, 1},
  200. BordersColor: borderColor,
  201. Color: math32.Color{0.5, 0.5, 0.5},
  202. Size: 30,
  203. },
  204. }
  205. // Slider styles
  206. StyleDefault.Slider = SliderStyles{
  207. Normal: SliderStyle{
  208. Border: borderSizes,
  209. BorderColor: borderColor,
  210. Paddings: BorderSizes{0, 0, 0, 0},
  211. BgColor: math32.Color4{0.8, 0.8, 0.8, 1},
  212. FgColor: math32.Color4{0, 0.8, 0, 1},
  213. },
  214. Over: SliderStyle{
  215. Border: borderSizes,
  216. BorderColor: borderColor,
  217. Paddings: BorderSizes{0, 0, 0, 0},
  218. BgColor: math32.Color4{1, 1, 1, 1},
  219. FgColor: math32.Color4{0, 1, 0, 1},
  220. },
  221. Focus: SliderStyle{
  222. Border: borderSizes,
  223. BorderColor: borderColor,
  224. Paddings: BorderSizes{0, 0, 0, 0},
  225. BgColor: math32.Color4{1, 1, 1, 1},
  226. FgColor: math32.Color4{0, 1, 0, 1},
  227. },
  228. Disabled: SliderStyle{
  229. Border: borderSizes,
  230. BorderColor: borderColor,
  231. Paddings: BorderSizes{0, 0, 0, 0},
  232. BgColor: math32.Color4{0.8, 0.8, 0.8, 1},
  233. FgColor: math32.Color4{0, 0.8, 0, 1},
  234. },
  235. }
  236. // Splitter styles
  237. StyleDefault.Splitter = SplitterStyles{
  238. Normal: SplitterStyle{
  239. SpacerBorderColor: borderColor,
  240. SpacerColor: bgColor,
  241. SpacerSize: 6,
  242. },
  243. Over: SplitterStyle{
  244. SpacerBorderColor: borderColor,
  245. SpacerColor: bgColorOver,
  246. SpacerSize: 6,
  247. },
  248. Drag: SplitterStyle{
  249. SpacerBorderColor: borderColor,
  250. SpacerColor: bgColorOver,
  251. SpacerSize: 6,
  252. },
  253. }
  254. StyleDefault.Window = WindowStyles{
  255. Normal: WindowStyle{
  256. Border: BorderSizes{4, 4, 4, 4},
  257. Paddings: BorderSizes{0, 0, 0, 0},
  258. BorderColor: math32.Color4{0.2, 0.2, 0.2, 1},
  259. TitleBorders: BorderSizes{0, 0, 1, 0},
  260. TitleBorderColor: math32.Color4{0, 0, 0, 1},
  261. TitleBgColor: math32.Color4{0, 1, 0, 1},
  262. TitleFgColor: math32.Color4{0, 0, 0, 1},
  263. },
  264. Over: WindowStyle{
  265. Border: BorderSizes{4, 4, 4, 4},
  266. Paddings: BorderSizes{0, 0, 0, 0},
  267. BorderColor: math32.Color4{0.2, 0.2, 0.2, 1},
  268. TitleBorders: BorderSizes{0, 0, 1, 0},
  269. TitleBorderColor: math32.Color4{0, 0, 0, 1},
  270. TitleBgColor: math32.Color4{0, 1, 0, 1},
  271. TitleFgColor: math32.Color4{0, 0, 0, 1},
  272. },
  273. Focus: WindowStyle{
  274. Border: BorderSizes{4, 4, 4, 4},
  275. Paddings: BorderSizes{0, 0, 0, 0},
  276. BorderColor: math32.Color4{0.2, 0.2, 0.2, 1},
  277. TitleBorders: BorderSizes{0, 0, 1, 0},
  278. TitleBorderColor: math32.Color4{0, 0, 0, 1},
  279. TitleBgColor: math32.Color4{0, 1, 0, 1},
  280. TitleFgColor: math32.Color4{0, 0, 0, 1},
  281. },
  282. Disabled: WindowStyle{
  283. Border: BorderSizes{4, 4, 4, 4},
  284. Paddings: BorderSizes{0, 0, 0, 0},
  285. BorderColor: math32.Color4{0.2, 0.2, 0.2, 1},
  286. TitleBorders: BorderSizes{0, 0, 1, 0},
  287. TitleBorderColor: math32.Color4{0, 0, 0, 1},
  288. TitleBgColor: math32.Color4{0, 1, 0, 1},
  289. TitleFgColor: math32.Color4{0, 0, 0, 1},
  290. },
  291. }
  292. // Scroller styles
  293. StyleDefault.Scroller = ScrollerStyles{
  294. Normal: ScrollerStyle{
  295. Border: BorderSizes{1, 1, 1, 1},
  296. Paddings: BorderSizes{0, 0, 0, 0},
  297. BorderColor: borderColor,
  298. BgColor: bgColor,
  299. FgColor: fgColor,
  300. },
  301. Over: ScrollerStyle{
  302. Border: BorderSizes{1, 1, 1, 1},
  303. Paddings: BorderSizes{0, 0, 0, 0},
  304. BorderColor: borderColor,
  305. BgColor: bgColorOver,
  306. FgColor: fgColor,
  307. },
  308. Focus: ScrollerStyle{
  309. Border: BorderSizes{1, 1, 1, 1},
  310. Paddings: BorderSizes{0, 0, 0, 0},
  311. BorderColor: borderColor,
  312. BgColor: bgColorOver,
  313. FgColor: fgColor,
  314. },
  315. Disabled: ScrollerStyle{
  316. Border: BorderSizes{1, 1, 1, 1},
  317. Paddings: BorderSizes{0, 0, 0, 0},
  318. BorderColor: borderColor,
  319. BgColor: bgColor,
  320. FgColor: fgColor,
  321. },
  322. }
  323. // List styles
  324. StyleDefault.List = ListStyles{
  325. Scroller: &ScrollerStyles{
  326. Normal: ScrollerStyle{
  327. Border: BorderSizes{1, 1, 1, 1},
  328. Paddings: BorderSizes{0, 0, 0, 0},
  329. BorderColor: borderColor,
  330. BgColor: bgColor,
  331. FgColor: fgColor,
  332. },
  333. Over: ScrollerStyle{
  334. Border: BorderSizes{1, 1, 1, 1},
  335. Paddings: BorderSizes{0, 0, 0, 0},
  336. BorderColor: borderColor,
  337. BgColor: bgColorOver,
  338. FgColor: fgColor,
  339. },
  340. Focus: ScrollerStyle{
  341. Border: BorderSizes{1, 1, 1, 1},
  342. Paddings: BorderSizes{0, 0, 0, 0},
  343. BorderColor: borderColor,
  344. BgColor: bgColorOver,
  345. FgColor: fgColor,
  346. },
  347. Disabled: ScrollerStyle{
  348. Border: BorderSizes{1, 1, 1, 1},
  349. Paddings: BorderSizes{0, 0, 0, 0},
  350. BorderColor: borderColor,
  351. BgColor: bgColor,
  352. FgColor: fgColor,
  353. },
  354. },
  355. Item: &ListItemStyles{
  356. Normal: ListItemStyle{
  357. Border: BorderSizes{1, 0, 1, 0},
  358. Paddings: BorderSizes{0, 0, 0, 2},
  359. BorderColor: math32.Color4{0, 0, 0, 0},
  360. BgColor: bgColor4,
  361. FgColor: fgColor,
  362. },
  363. Selected: ListItemStyle{
  364. Border: BorderSizes{1, 0, 1, 0},
  365. Paddings: BorderSizes{0, 0, 0, 2},
  366. BorderColor: math32.Color4{0, 0, 0, 0},
  367. BgColor: bgColor4Sel,
  368. FgColor: fgColorSel,
  369. },
  370. Highlighted: ListItemStyle{
  371. Border: BorderSizes{1, 0, 1, 0},
  372. Paddings: BorderSizes{0, 0, 0, 2},
  373. BorderColor: math32.Color4{0, 0, 0, 1},
  374. BgColor: bgColor4Over,
  375. FgColor: fgColor,
  376. },
  377. SelHigh: ListItemStyle{
  378. Border: BorderSizes{1, 0, 1, 0},
  379. Paddings: BorderSizes{0, 0, 0, 2},
  380. BorderColor: math32.Color4{0, 0, 0, 1},
  381. BgColor: bgColor4Sel,
  382. FgColor: fgColorSel,
  383. },
  384. },
  385. }
  386. StyleDefault.DropDown = DropDownStyles{
  387. Normal: &DropDownStyle{
  388. Border: BorderSizes{1, 1, 1, 1},
  389. Paddings: BorderSizes{0, 0, 0, 2},
  390. BorderColor: borderColor,
  391. BgColor: bgColor,
  392. FgColor: fgColor,
  393. },
  394. Over: &DropDownStyle{
  395. Border: BorderSizes{1, 1, 1, 1},
  396. Paddings: BorderSizes{0, 0, 0, 2},
  397. BorderColor: borderColor,
  398. BgColor: bgColorOver,
  399. FgColor: fgColor,
  400. },
  401. Focus: &DropDownStyle{
  402. Border: BorderSizes{1, 1, 1, 1},
  403. Paddings: BorderSizes{0, 0, 0, 2},
  404. BorderColor: borderColor,
  405. BgColor: bgColorOver,
  406. FgColor: fgColor,
  407. },
  408. Disabled: &DropDownStyle{
  409. Border: BorderSizes{1, 1, 1, 1},
  410. Paddings: BorderSizes{0, 0, 0, 2},
  411. BorderColor: borderColor,
  412. BgColor: bgColor,
  413. FgColor: fgColor,
  414. },
  415. }
  416. StyleDefault.Folder = FolderStyles{
  417. Normal: &FolderStyle{
  418. Margins: BorderSizes{0, 0, 0, 0},
  419. Border: BorderSizes{1, 1, 1, 1},
  420. Paddings: BorderSizes{2, 0, 2, 2},
  421. BorderColor: borderColor,
  422. BgColor: bgColor,
  423. FgColor: fgColor,
  424. Icons: [2]int{assets.ExpandMore, assets.ExpandLess},
  425. },
  426. Over: &FolderStyle{
  427. Margins: BorderSizes{0, 0, 0, 0},
  428. Border: BorderSizes{1, 1, 1, 1},
  429. Paddings: BorderSizes{2, 0, 2, 2},
  430. BorderColor: borderColor,
  431. BgColor: bgColorOver,
  432. FgColor: fgColor,
  433. Icons: [2]int{assets.ExpandMore, assets.ExpandLess},
  434. },
  435. Focus: &FolderStyle{
  436. Margins: BorderSizes{0, 0, 0, 0},
  437. Border: BorderSizes{1, 1, 1, 1},
  438. Paddings: BorderSizes{2, 2, 2, 2},
  439. BorderColor: borderColor,
  440. BgColor: bgColorOver,
  441. FgColor: fgColor,
  442. Icons: [2]int{assets.ExpandMore, assets.ExpandLess},
  443. },
  444. Disabled: &FolderStyle{
  445. Margins: BorderSizes{0, 0, 0, 0},
  446. Border: BorderSizes{1, 1, 1, 1},
  447. Paddings: BorderSizes{2, 2, 2, 2},
  448. BorderColor: borderColor,
  449. BgColor: bgColorOver,
  450. FgColor: fgColor,
  451. Icons: [2]int{assets.ExpandMore, assets.ExpandLess},
  452. },
  453. }
  454. StyleDefault.Tree = TreeStyles{
  455. List: &ListStyles{
  456. Scroller: &ScrollerStyles{
  457. Normal: ScrollerStyle{
  458. Border: BorderSizes{1, 1, 1, 1},
  459. Paddings: BorderSizes{0, 0, 0, 0},
  460. BorderColor: borderColor,
  461. BgColor: bgColor,
  462. FgColor: fgColor,
  463. },
  464. Over: ScrollerStyle{
  465. Border: BorderSizes{1, 1, 1, 1},
  466. Paddings: BorderSizes{0, 0, 0, 0},
  467. BorderColor: borderColor,
  468. BgColor: bgColorOver,
  469. FgColor: fgColor,
  470. },
  471. Focus: ScrollerStyle{
  472. Border: BorderSizes{1, 1, 1, 1},
  473. Paddings: BorderSizes{0, 0, 0, 0},
  474. BorderColor: borderColor,
  475. BgColor: bgColorOver,
  476. FgColor: fgColor,
  477. },
  478. Disabled: ScrollerStyle{
  479. Border: BorderSizes{1, 1, 1, 1},
  480. Paddings: BorderSizes{0, 0, 0, 0},
  481. BorderColor: borderColor,
  482. BgColor: bgColor,
  483. FgColor: fgColor,
  484. },
  485. },
  486. Item: &ListItemStyles{
  487. Normal: ListItemStyle{
  488. Border: BorderSizes{1, 0, 1, 0},
  489. Paddings: BorderSizes{0, 0, 0, 2},
  490. BorderColor: math32.Color4{0, 0, 0, 0},
  491. BgColor: bgColor4,
  492. FgColor: fgColor,
  493. },
  494. Selected: ListItemStyle{
  495. Border: BorderSizes{1, 0, 1, 0},
  496. Paddings: BorderSizes{0, 0, 0, 2},
  497. BorderColor: math32.Color4{0, 0, 0, 0},
  498. BgColor: bgColor4Sel,
  499. FgColor: fgColorSel,
  500. },
  501. Highlighted: ListItemStyle{
  502. Border: BorderSizes{1, 0, 1, 0},
  503. Paddings: BorderSizes{0, 0, 0, 2},
  504. BorderColor: math32.Color4{0, 0, 0, 1},
  505. BgColor: bgColor4Over,
  506. FgColor: fgColor,
  507. },
  508. SelHigh: ListItemStyle{
  509. Border: BorderSizes{1, 0, 1, 0},
  510. Paddings: BorderSizes{0, 0, 0, 2},
  511. BorderColor: math32.Color4{0, 0, 0, 1},
  512. BgColor: bgColor4Sel,
  513. FgColor: fgColorSel,
  514. },
  515. },
  516. },
  517. Node: &TreeNodeStyles{
  518. Normal: TreeNodeStyle{
  519. Border: BorderSizes{0, 0, 0, 0},
  520. Paddings: BorderSizes{0, 0, 0, 0},
  521. BorderColor: borderColor,
  522. BgColor: bgColor,
  523. FgColor: fgColor,
  524. Icons: [2]int{assets.ExpandMore, assets.ExpandLess},
  525. },
  526. },
  527. Padlevel: 16.0,
  528. }
  529. StyleDefault.ControlFolder = ControlFolderStyles{
  530. Folder: &FolderStyles{
  531. Normal: &FolderStyle{
  532. Margins: BorderSizes{0, 0, 0, 0},
  533. Border: BorderSizes{1, 1, 1, 1},
  534. Paddings: BorderSizes{2, 0, 2, 2},
  535. BorderColor: math32.Color4{0, 0, 0, 0},
  536. BgColor: math32.Color{0, 0.5, 1},
  537. FgColor: fgColor,
  538. Icons: [2]int{assets.ExpandMore, assets.ExpandLess},
  539. },
  540. Over: &FolderStyle{
  541. Margins: BorderSizes{0, 0, 0, 0},
  542. Border: BorderSizes{1, 1, 1, 1},
  543. Paddings: BorderSizes{2, 0, 2, 2},
  544. BorderColor: math32.Color4{0, 0, 0, 0},
  545. BgColor: math32.Color{0, 0.5, 1},
  546. FgColor: fgColor,
  547. Icons: [2]int{assets.ExpandMore, assets.ExpandLess},
  548. },
  549. Focus: &FolderStyle{
  550. Margins: BorderSizes{0, 0, 0, 0},
  551. Border: BorderSizes{1, 1, 1, 1},
  552. Paddings: BorderSizes{2, 2, 2, 2},
  553. BorderColor: math32.Color4{0, 0, 0, 0},
  554. BgColor: math32.Color{0, 0.5, 1},
  555. FgColor: fgColor,
  556. Icons: [2]int{assets.ExpandMore, assets.ExpandLess},
  557. },
  558. Disabled: &FolderStyle{
  559. Margins: BorderSizes{0, 0, 0, 0},
  560. Border: BorderSizes{1, 1, 1, 1},
  561. Paddings: BorderSizes{2, 2, 2, 2},
  562. BorderColor: math32.Color4{0, 0, 0, 0},
  563. BgColor: math32.Color{0, 0.5, 1},
  564. FgColor: fgColor,
  565. Icons: [2]int{assets.ExpandMore, assets.ExpandLess},
  566. },
  567. },
  568. Tree: &TreeStyles{
  569. List: &ListStyles{
  570. Scroller: &ScrollerStyles{
  571. Normal: ScrollerStyle{
  572. Border: BorderSizes{1, 1, 1, 1},
  573. Paddings: BorderSizes{0, 2, 0, 0},
  574. BorderColor: borderColor,
  575. BgColor: bgColor,
  576. FgColor: fgColor,
  577. },
  578. Over: ScrollerStyle{
  579. Border: BorderSizes{1, 1, 1, 1},
  580. Paddings: BorderSizes{0, 2, 0, 0},
  581. BorderColor: borderColor,
  582. BgColor: bgColorOver,
  583. FgColor: fgColor,
  584. },
  585. Focus: ScrollerStyle{
  586. Border: BorderSizes{1, 1, 1, 1},
  587. Paddings: BorderSizes{0, 2, 0, 0},
  588. BorderColor: borderColor,
  589. BgColor: bgColorOver,
  590. FgColor: fgColor,
  591. },
  592. Disabled: ScrollerStyle{
  593. Border: BorderSizes{1, 1, 1, 1},
  594. Paddings: BorderSizes{0, 2, 0, 0},
  595. BorderColor: borderColor,
  596. BgColor: bgColor,
  597. FgColor: fgColor,
  598. },
  599. },
  600. Item: &ListItemStyles{
  601. Normal: ListItemStyle{
  602. Border: BorderSizes{1, 0, 1, 0},
  603. Paddings: BorderSizes{0, 0, 0, 2},
  604. BorderColor: math32.Color4{0, 0, 0, 0},
  605. BgColor: bgColor4,
  606. FgColor: fgColor,
  607. },
  608. Selected: ListItemStyle{
  609. Border: BorderSizes{1, 0, 1, 0},
  610. Paddings: BorderSizes{0, 0, 0, 2},
  611. BorderColor: math32.Color4{0, 0, 0, 0},
  612. BgColor: bgColor4,
  613. FgColor: fgColor,
  614. },
  615. Highlighted: ListItemStyle{
  616. Border: BorderSizes{1, 0, 1, 0},
  617. Paddings: BorderSizes{0, 0, 0, 2},
  618. BorderColor: math32.Color4{0, 0, 0, 1},
  619. BgColor: bgColor4Over,
  620. FgColor: fgColor,
  621. },
  622. SelHigh: ListItemStyle{
  623. Border: BorderSizes{1, 0, 1, 0},
  624. Paddings: BorderSizes{0, 0, 0, 2},
  625. BorderColor: math32.Color4{0, 0, 0, 1},
  626. BgColor: bgColor4Sel,
  627. FgColor: fgColorSel,
  628. },
  629. },
  630. },
  631. Node: &TreeNodeStyles{
  632. Normal: TreeNodeStyle{
  633. Border: BorderSizes{0, 0, 0, 0},
  634. Paddings: BorderSizes{0, 0, 0, 0},
  635. BorderColor: borderColor,
  636. BgColor: bgColor,
  637. FgColor: fgColor,
  638. Icons: [2]int{assets.ExpandMore, assets.ExpandLess},
  639. },
  640. },
  641. Padlevel: 2.0,
  642. },
  643. }
  644. // Menu styles
  645. StyleDefault.Menu = MenuStyles{
  646. Body: &MenuBodyStyles{
  647. Normal: MenuBodyStyle{
  648. Border: BorderSizes{1, 1, 1, 1},
  649. Paddings: BorderSizes{2, 2, 2, 2},
  650. BorderColor: borderColor,
  651. BgColor: bgColor,
  652. FgColor: fgColor,
  653. },
  654. Over: MenuBodyStyle{
  655. Border: BorderSizes{1, 1, 1, 1},
  656. Paddings: BorderSizes{2, 2, 2, 2},
  657. BorderColor: borderColor,
  658. BgColor: bgColorOver,
  659. FgColor: fgColor,
  660. },
  661. Focus: MenuBodyStyle{
  662. Border: BorderSizes{1, 1, 1, 1},
  663. Paddings: BorderSizes{2, 2, 2, 2},
  664. BorderColor: borderColor,
  665. BgColor: bgColorOver,
  666. FgColor: fgColor,
  667. },
  668. Disabled: MenuBodyStyle{
  669. Border: BorderSizes{1, 1, 1, 1},
  670. Paddings: BorderSizes{2, 2, 2, 2},
  671. BorderColor: borderColor,
  672. BgColor: bgColor,
  673. FgColor: fgColor,
  674. },
  675. },
  676. Item: &MenuItemStyles{
  677. Normal: MenuItemStyle{
  678. Border: BorderSizes{0, 0, 0, 0},
  679. Paddings: BorderSizes{2, 4, 2, 2},
  680. BorderColor: borderColor,
  681. BgColor: bgColor,
  682. FgColor: fgColor,
  683. IconPaddings: BorderSizes{0, 6, 0, 4},
  684. ShortcutPaddings: BorderSizes{0, 0, 0, 10},
  685. RiconPaddings: BorderSizes{2, 0, 0, 4},
  686. },
  687. Over: MenuItemStyle{
  688. Border: BorderSizes{0, 0, 0, 0},
  689. Paddings: BorderSizes{2, 4, 2, 2},
  690. BorderColor: borderColor,
  691. BgColor: math32.Color{0.6, 0.6, 0.6},
  692. FgColor: fgColor,
  693. IconPaddings: BorderSizes{0, 6, 0, 4},
  694. ShortcutPaddings: BorderSizes{0, 0, 0, 10},
  695. RiconPaddings: BorderSizes{2, 0, 0, 4},
  696. },
  697. Disabled: MenuItemStyle{
  698. Border: BorderSizes{0, 0, 0, 0},
  699. Paddings: BorderSizes{2, 4, 2, 2},
  700. BorderColor: borderColor,
  701. BgColor: bgColor,
  702. FgColor: fgColorDis,
  703. IconPaddings: BorderSizes{0, 6, 0, 4},
  704. ShortcutPaddings: BorderSizes{0, 0, 0, 10},
  705. RiconPaddings: BorderSizes{2, 0, 0, 4},
  706. },
  707. Separator: MenuItemStyle{
  708. Border: BorderSizes{2, 2, 2, 2},
  709. Paddings: BorderSizes{0, 0, 0, 0},
  710. BorderColor: math32.Color4{0, 0, 0, 0},
  711. BgColor: math32.Color{0.6, 0.6, 0.6},
  712. FgColor: fgColor,
  713. },
  714. },
  715. }
  716. }