UI.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package UI
  2. import (
  3. "fmt"
  4. "github.com/veandco/go-sdl2/sdl"
  5. "github.com/veandco/go-sdl2/ttf"
  6. "github.com/clockworkpi/LauncherGoDev/sysgo"
  7. "github.com/cuu/gogame/font"
  8. )
  9. type WidgetInterface interface {
  10. Size() (int, int)
  11. NewSize(w, h int)
  12. Coord() (int, int)
  13. NewCoord(x, y int)
  14. }
  15. type Coord struct {
  16. X int
  17. Y int
  18. }
  19. type Plane struct {
  20. W int
  21. H int
  22. }
  23. type Widget struct {
  24. PosX int
  25. PosY int
  26. Width int
  27. Height int
  28. }
  29. func (self *Widget) Size() (int, int) {
  30. return self.Width, self.Height
  31. }
  32. func (self *Widget) NewSize(w, h int) {
  33. self.Width = w
  34. self.Height = h
  35. }
  36. func (self *Widget) Coord() (int, int) {
  37. return self.PosX, self.PosY
  38. }
  39. func (self *Widget) NewCoord(x, y int) {
  40. self.PosX = x
  41. self.PosY = y
  42. }
  43. func FontRW(font_data [] byte, font_size int) *ttf.Font {
  44. mem,err := sdl.RWFromMem(font_data)
  45. if err != nil {
  46. panic(err)
  47. }
  48. font, err := ttf.OpenFontRW(mem, 0, font_size)
  49. if err != nil {
  50. panic(fmt.Sprintf("OpenRW font failed %s", err))
  51. }
  52. return font
  53. }
  54. type FontData struct {
  55. Data []byte
  56. Size int
  57. }
  58. //invoked in main.go
  59. func Init() {
  60. font.Init()
  61. fonts_name := [4]string{"VarelaRound-Regular.ttf",
  62. "VeraMono.ttf",
  63. "NotoSansMono-Regular.ttf",
  64. "NotoSansCJK-Regular.ttf"}
  65. skinpath := sysgo.SKIN + "/truetype"
  66. Fonts = make(map[string]*ttf.Font)
  67. fonts_path := make(map[string]string)
  68. fonts_path["varela"] = fmt.Sprintf("%s/%s", skinpath,fonts_name[0])
  69. fonts_path["veramono"] = fmt.Sprintf("%s/%s", skinpath,fonts_name[1])
  70. fonts_path["noto"] = fmt.Sprintf("%s/%s", skinpath,fonts_name[2])
  71. fonts_path["notocjk"] = fmt.Sprintf("%s/%s", skinpath,fonts_name[3])
  72. fonts_data := make(map[string]FontData)
  73. d,s := sdl.LoadFile(fonts_path["varela"])
  74. fonts_data["varela"] = FontData{d,s}
  75. d,s = sdl.LoadFile(fonts_path["notocjk"])
  76. fonts_data["notocjk"] = FontData{d,s}
  77. d,s = sdl.LoadFile(fonts_path["veramono"])
  78. fonts_data["veramono"] = FontData{d,s}
  79. //d,s = sdl.LoadFile(fonts_path["noto"])
  80. //fonts_data["noto"] = FontData{d,s}
  81. Fonts["varela11"] = FontRW(fonts_data["varela"].Data, 11)
  82. Fonts["varela12"] = FontRW(fonts_data["varela"].Data, 12)
  83. Fonts["varela13"] = FontRW(fonts_data["varela"].Data, 13)
  84. Fonts["varela15"] = FontRW(fonts_data["varela"].Data, 15)
  85. Fonts["varela16"] = FontRW(fonts_data["varela"].Data, 16)
  86. Fonts["varela18"] = FontRW(fonts_data["varela"].Data, 18)
  87. Fonts["varela22"] = FontRW(fonts_data["varela"].Data, 22)
  88. Fonts["varela25"] = FontRW(fonts_data["varela"].Data, 25)
  89. Fonts["varela40"] = FontRW(fonts_data["varela"].Data, 40)
  90. Fonts["varela120"] = FontRW(fonts_data["varela"].Data, 120)
  91. Fonts["veramono10"] = FontRW(fonts_data["veramono"].Data, 10)
  92. Fonts["veramono12"] = FontRW(fonts_data["veramono"].Data, 12)
  93. Fonts["veramono15"] = FontRW(fonts_data["veramono"].Data, 15)
  94. Fonts["veramono18"] = FontRW(fonts_data["veramono"].Data, 18)
  95. Fonts["veramono20"] = FontRW(fonts_data["veramono"].Data, 20)
  96. Fonts["veramono24"] = FontRW(fonts_data["veramono"].Data, 24)
  97. /*
  98. for i := 10; i < 28; i++ {
  99. keyname := fmt.Sprintf("notosansmono%d", i)
  100. Fonts[keyname] = FontRW(fonts_data["noto"].Data, i)
  101. }
  102. */
  103. Fonts["notosanscjk12"] = font.Font(fonts_path["notocjk"], 12)
  104. Fonts["notosanscjk14"] = font.Font(fonts_path["notocjk"], 14)
  105. Fonts["notosanscjk15"] = font.Font(fonts_path["notocjk"], 15)
  106. //
  107. keys_def_init()
  108. //// global variables Init
  109. if MyIconPool == nil {
  110. MyIconPool = NewIconPool()
  111. MyIconPool.Init()
  112. }
  113. if MyLangManager == nil {
  114. MyLangManager = NewLangManager()
  115. MyLangManager.Init()
  116. }
  117. if MySkinManager == nil {
  118. MySkinManager = NewSkinManager()
  119. MySkinManager.Init()
  120. }
  121. }