multi_icon_item.py 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. # -*- coding: utf-8 -*-
  2. import pygame
  3. #from beeprint import pp
  4. ## local import
  5. from constants import icon_width,icon_height,ICON_TYPES,ALIGN,icon_ext,Width,Height
  6. from util_funcs import color_surface,midRect
  7. from label import Label
  8. from icon_item import IconItem
  9. ##Resource file contains multi icons in single image
  10. ##usually the Image contains icons in Vertical, convert 1.png 2.png 3.png -append out.png
  11. class MultiIconItem(IconItem):
  12. _IconWidth=18
  13. _IconHeight=18
  14. _IconIndex = 0 # icon index on the resource Image
  15. def CreateImageSurf(self):
  16. if self._ImgSurf == None and self._ImageName != "":
  17. # print(self._ImageName)
  18. self._ImgSurf = pygame.image.load( self._ImageName ).convert_alpha()
  19. def DrawTopLeft(self):
  20. if self._Align==ALIGN["VCenter"]: #default
  21. if self._Label != None:
  22. self._Label._PosX = self._PosX - self._Label._Width/2 + self._Parent._PosX
  23. self._Label._PosY = self._PosY + self._Height/2 +6 + self._Parent._PosY
  24. elif self._Align ==ALIGN["HLeft"]:
  25. if self._Label != None:
  26. self._Label._PosX = self._PosX + self._Width/2 + 3 + self._Parent._PosX
  27. self._Label._PosY = self._PosY - self._Label._Height/2 + self._Parent._PosY
  28. if self._Label!=None:
  29. self._Label.Draw()
  30. if self._ImgSurf != None:
  31. self._Parent._CanvasHWND.blit(self._ImgSurf,pygame.Rect(self._PosX+self._Parent._PosX,
  32. self._PosY+self._Parent._PosY,
  33. self._Width,self._Height),
  34. (0,self._IconIndex*self._IconHeight,self._IconWidth,self._IconHeight))
  35. def DrawRect(self,rect1,rect2):
  36. if self._ImgSurf != None:
  37. self._Parent._CanvasHWND.blit(self._ImgSurf,rect1,rect2)
  38. def Draw(self):
  39. if self._Align==ALIGN["VCenter"]: #default
  40. if self._Label != None:
  41. self._Label._PosX = self._PosX - self._Label._Width/2 + self._Parent._PosX
  42. self._Label._PosY = self._PosY + self._Height/2 +6 + self._Parent._PosY
  43. elif self._Align ==ALIGN["HLeft"]:
  44. if self._Label != None:
  45. self._Label._PosX = self._PosX + self._Width/2 + 3 + self._Parent._PosX
  46. self._Label._PosY = self._PosY - self._Label._Height/2 + self._Parent._PosY
  47. if self._Label!=None:
  48. self._Label.Draw()
  49. if self._ImgSurf != None:
  50. self._Parent._CanvasHWND.blit(self._ImgSurf,midRect(self._PosX+self._Parent._PosX,
  51. self._PosY+self._Parent._PosY,
  52. self._Width,self._Height,Width,Height),
  53. (0,self._IconIndex*self._IconHeight,self._IconWidth,self._IconHeight))