scroller.py 1.7 KB

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