skin_manager.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package UI
  2. import (
  3. "fmt"
  4. "log"
  5. "strings"
  6. "strconv"
  7. "github.com/go-ini/ini"
  8. "github.com/cuu/gogame/color"
  9. "github.com/clockworkpi/LauncherGoDev/sysgo"
  10. )
  11. type SkinManager struct {
  12. Colors map[string]*color.Color
  13. }
  14. func NewSkinManager() *SkinManager {
  15. s := &SkinManager{}
  16. return s
  17. }
  18. func (self *SkinManager) ConvertToRGB(hexstr string) *color.Color {
  19. if len(hexstr) < 7 || string(hexstr[0]) != "#" { // # 00 00 00
  20. log.Fatalf("ConvertToRGB hex string format error %s", hexstr)
  21. //fmt.Printf("ConvertToRGB hex string format error %s", hexstr)
  22. return nil
  23. }
  24. h := strings.TrimLeft(hexstr,"#")
  25. r,_ := strconv.ParseInt(h[0:2], 16,0)
  26. g,_ := strconv.ParseInt(h[2:4], 16,0)
  27. b,_ := strconv.ParseInt(h[4:6], 16,0)
  28. col := &color.Color{ uint32(r),uint32(g),uint32(b),255 }
  29. return col
  30. }
  31. func (self *SkinManager) ChangeSkin( skin_name string ) {
  32. }
  33. func (self *SkinManager) Init() {
  34. self.Colors = make(map[string]*color.Color)
  35. self.Colors["High"] = &color.Color{51,166,255,255}
  36. self.Colors["Text"] = &color.Color{83,83,83,255}
  37. self.Colors["ReadOnlyText"] = &color.Color{130,130,130,255}
  38. self.Colors["Front"] = &color.Color{131,199,219,255}
  39. self.Colors["URL"] = &color.Color{51,166,255,255}
  40. self.Colors["Line"] = &color.Color{169,169,169,255}
  41. self.Colors["TitleBg"] = &color.Color{228,228,228,255}
  42. self.Colors["Active"] = &color.Color{175,90,0,255}
  43. self.Colors["Disabled"] = &color.Color{204,204,204,255}
  44. self.Colors["White"] = &color.Color{255,255,255,255}
  45. self.Colors["Black"] = &color.Color{0,0,0,255}
  46. fname := "skin/"+sysgo.SKIN+"/config.ini"
  47. load_opts := ini.LoadOptions{
  48. IgnoreInlineComment:true,
  49. }
  50. cfg, err := ini.LoadSources(load_opts, fname )
  51. if err != nil {
  52. fmt.Printf("Fail to read file: %v\n", err)
  53. return
  54. }
  55. section := cfg.Section("Colors")
  56. if section != nil {
  57. colour_opts := section.KeyStrings()
  58. for _,v := range colour_opts {
  59. if _, ok := self.Colors[v]; ok { // has this Color key
  60. parsed_color := self.ConvertToRGB( section.Key(v).String() )
  61. if parsed_color != nil {
  62. self.Colors[v] = parsed_color
  63. }
  64. }
  65. }
  66. }
  67. }
  68. func (self *SkinManager) GiveColor(name string) *color.Color {
  69. if val,ok := self.Colors[name]; ok {
  70. return val
  71. }else {
  72. return &color.Color{255,0,0,255}
  73. }
  74. }
  75. var MySkinManager *SkinManager