scroller.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. # -*- coding: utf-8 -*-
  2. import pygame
  3. from util_funcs import midRect
  4. from libs.roundrects import aa_round_rect
  5. class ListScroller(object):
  6. _PosX = 0
  7. _PosY = 0
  8. _Width = 7
  9. _Height = 0
  10. _MinHeight = 6 ## tested
  11. _Parent = None
  12. _Color = pygame.Color(131,199,219)
  13. _StartX = 0
  14. _StartY = 0
  15. _EndX = 0
  16. _EndY = 0
  17. _Value = 0
  18. _CanvasHWND = None
  19. def __init__(self):
  20. pass
  21. def Init(self):
  22. self.SetCanvasHWND(self._Parent._CanvasHWND)
  23. def SetCanvasHWND(self,canvas):
  24. self._CanvasHWND = canvas
  25. def AnimateDraw(self,x2,y2):
  26. pass
  27. def UpdateSize(self,bigheight,dirtyheight):
  28. bodyheight = float(self._Parent._Height) / float(bigheight)
  29. if bodyheight > 1:
  30. bodyheight = 1 ## 100%
  31. margin = 4
  32. self._Height = bodyheight * self._Parent._Height - margin ## Draw body
  33. if self._Height < self._MinHeight:
  34. self._Height = self._MinHeight
  35. self._StartX = self._Width/2
  36. self._StartY = margin/2+self._Height/2
  37. self._EndX = self._Width/2
  38. self._EndY = self._Parent._Height - margin/2 - self._Height/2
  39. process = float(dirtyheight) / float(bigheight)
  40. value = process* (self._EndY - self._StartY)
  41. self._Value = int(value)
  42. def Draw(self):
  43. start_rect = midRect(self._PosX+self._StartX,self._StartY+self._Value,self._Width,self._Height,self._Parent._Width,self._Parent._Height)
  44. aa_round_rect(self._CanvasHWND,start_rect, self._Color,3,0, self._Color)