multi_icon_item.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package UI
  2. import (
  3. "fmt"
  4. "github.com/cuu/gogame/draw"
  5. "github.com/cuu/gogame/image"
  6. "github.com/cuu/gogame/rect"
  7. "github.com/cuu/gogame/surface"
  8. )
  9. type MultiIconItem struct {
  10. IconItem
  11. IconWidth int
  12. IconHeight int
  13. }
  14. func NewMultiIconItem() *MultiIconItem {
  15. m := &MultiIconItem{}
  16. m.IconIndex = 0
  17. m.IconWidth = 18
  18. m.IconHeight = 18
  19. return m
  20. }
  21. func (self *MultiIconItem) CreateImgSurf() {
  22. if self.ImgSurf == nil && self.ImageName != "" {
  23. self.ImgSurf = image.Load(self.ImageName)
  24. }
  25. }
  26. func (self *MultiIconItem) DrawTopLeft() {
  27. if self.Parent == nil {
  28. fmt.Println("Error: MultiIconItem Draw Parent nil")
  29. return
  30. }
  31. parent_x, parent_y := self.Parent.Coord()
  32. if self.Label != nil {
  33. lab_w, lab_h := self.Label.Size()
  34. if self.Align == ALIGN["VCenter"] {
  35. self.Label.NewCoord(self.PosX-lab_w/2+parent_x, self.PosY+self.Height/2+6+parent_y)
  36. } else if self.Align == ALIGN["HLeft"] {
  37. self.Label.NewCoord(self.PosX+self.Width/2+3+parent_x, self.PosY-lab_h/2+parent_y)
  38. }
  39. self.Label.Draw()
  40. }
  41. if self.ImgSurf != nil {
  42. portion := rect.Rect(0, self.IconIndex*self.IconHeight, self.IconWidth, self.IconHeight)
  43. rect_ := rect.Rect(self.PosX+parent_x, self.PosY+parent_y, self.Width, self.Height) // DIFF
  44. surface.Blit(self.Parent.GetCanvasHWND(), self.ImgSurf, &rect_, &portion)
  45. }
  46. }
  47. func (self *MultiIconItem) Draw() {
  48. if self.Parent == nil {
  49. fmt.Println("Error: MultiIconItem Draw Parent nil")
  50. return
  51. }
  52. parent_x, parent_y := self.Parent.Coord()
  53. if self.Label != nil {
  54. // lab_x,lab_y := self.Label.Coord()
  55. lab_w, lab_h := self.Label.Size()
  56. if self.Align == ALIGN["VCenter"] {
  57. self.Label.NewCoord(self.PosX-lab_w/2+parent_x, self.PosY+self.Height/2+6+parent_y)
  58. } else if self.Align == ALIGN["HLeft"] {
  59. self.Label.NewCoord(self.PosX+self.Width/2+3+parent_x, self.PosY-lab_h/2+parent_y)
  60. }
  61. self.Label.Draw()
  62. }
  63. if self.ImgSurf != nil {
  64. portion := rect.Rect(0, self.IconIndex*self.IconHeight, self.IconWidth, self.IconHeight)
  65. surface.Blit(self.Parent.GetCanvasHWND(),
  66. self.ImgSurf, draw.MidRect(self.PosX+parent_x, self.PosY+parent_y,
  67. self.Width, self.Height, Width, Height), &portion)
  68. }
  69. }