theme.go 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package test
  2. import (
  3. "image/color"
  4. "fyne.io/fyne/v2"
  5. "fyne.io/fyne/v2/theme"
  6. )
  7. var defaultTheme fyne.Theme
  8. var _ fyne.Theme = (*configurableTheme)(nil)
  9. type configurableTheme struct {
  10. colors map[fyne.ThemeColorName]color.Color
  11. fonts map[fyne.TextStyle]fyne.Resource
  12. sizes map[fyne.ThemeSizeName]float32
  13. }
  14. // Theme returns a theme useful for image based tests.
  15. func Theme() fyne.Theme {
  16. if defaultTheme == nil {
  17. defaultTheme = &configurableTheme{
  18. colors: map[fyne.ThemeColorName]color.Color{
  19. theme.ColorNameBackground: color.NRGBA{R: 0x44, G: 0x44, B: 0x44, A: 0xff},
  20. theme.ColorNameButton: color.NRGBA{R: 0x33, G: 0x33, B: 0x33, A: 0xff},
  21. theme.ColorNameDisabled: color.NRGBA{R: 0x88, G: 0x88, B: 0x88, A: 0xff},
  22. theme.ColorNameDisabledButton: color.NRGBA{R: 0x22, G: 0x22, B: 0x22, A: 0xff},
  23. theme.ColorNameError: color.NRGBA{R: 0xf4, G: 0x43, B: 0x36, A: 0xff},
  24. theme.ColorNameFocus: color.NRGBA{R: 0x78, G: 0x3a, B: 0x3a, A: 0xff},
  25. theme.ColorNameForeground: color.NRGBA{R: 0xff, G: 0xff, B: 0xff, A: 0xff},
  26. theme.ColorNameHover: color.NRGBA{R: 0x88, G: 0xff, B: 0xff, A: 0x22},
  27. theme.ColorNameInputBackground: color.NRGBA{R: 0x66, G: 0x66, B: 0x66, A: 0xff},
  28. theme.ColorNameInputBorder: color.NRGBA{R: 0x86, G: 0x86, B: 0x86, A: 0xff},
  29. theme.ColorNameMenuBackground: color.NRGBA{R: 0x56, G: 0x56, B: 0x56, A: 0xff},
  30. theme.ColorNameOverlayBackground: color.NRGBA{R: 0x22, G: 0x22, B: 0x22, A: 0xff},
  31. theme.ColorNamePlaceHolder: color.NRGBA{R: 0xaa, G: 0xaa, B: 0xaa, A: 0xff},
  32. theme.ColorNamePressed: color.NRGBA{A: 0x33},
  33. theme.ColorNamePrimary: color.NRGBA{R: 0xff, G: 0xcc, B: 0x80, A: 0xff},
  34. theme.ColorNameScrollBar: color.NRGBA{R: 0x00, G: 0x00, B: 0x00, A: 0xaa},
  35. theme.ColorNameSeparator: color.NRGBA{R: 0x88, G: 0x88, B: 0x88, A: 0xff},
  36. theme.ColorNameSelection: color.NRGBA{R: 0x78, G: 0x3a, B: 0x3a, A: 0x99},
  37. theme.ColorNameShadow: color.NRGBA{A: 0x88},
  38. },
  39. fonts: map[fyne.TextStyle]fyne.Resource{
  40. {}: theme.DefaultTextFont(),
  41. {Bold: true}: theme.DefaultTextBoldFont(),
  42. {Bold: true, Italic: true}: theme.DefaultTextBoldItalicFont(),
  43. {Italic: true}: theme.DefaultTextItalicFont(),
  44. {Monospace: true}: theme.DefaultTextMonospaceFont(),
  45. },
  46. sizes: map[fyne.ThemeSizeName]float32{
  47. theme.SizeNameInlineIcon: float32(20),
  48. theme.SizeNameInnerPadding: float32(8),
  49. theme.SizeNameLineSpacing: float32(4),
  50. theme.SizeNamePadding: float32(4),
  51. theme.SizeNameScrollBar: float32(16),
  52. theme.SizeNameScrollBarSmall: float32(3),
  53. theme.SizeNameSeparatorThickness: float32(1),
  54. theme.SizeNameText: float32(14),
  55. theme.SizeNameHeadingText: float32(23.8),
  56. theme.SizeNameSubHeadingText: float32(18),
  57. theme.SizeNameCaptionText: float32(11),
  58. theme.SizeNameInputBorder: float32(2),
  59. },
  60. }
  61. }
  62. return defaultTheme
  63. }
  64. func (t *configurableTheme) Color(n fyne.ThemeColorName, _ fyne.ThemeVariant) color.Color {
  65. return t.colors[n]
  66. }
  67. func (t *configurableTheme) Font(style fyne.TextStyle) fyne.Resource {
  68. return t.fonts[style]
  69. }
  70. func (t *configurableTheme) Icon(n fyne.ThemeIconName) fyne.Resource {
  71. return theme.DefaultTheme().Icon(n)
  72. }
  73. func (t *configurableTheme) Size(s fyne.ThemeSizeName) float32 {
  74. return t.sizes[s]
  75. }