home *** CD-ROM | disk | FTP | other *** search
/ PC PowerPlay 56 / CDPowerplay56Disc2.iso / demos / blade / data1.cab / Program_Executable_Files / Lib / LoadBar.py < prev    next >
Encoding:
Python Source  |  2000-10-27  |  4.8 KB  |  195 lines

  1.  
  2.  
  3. import BBLib
  4. import Raster
  5. import Bladex
  6.  
  7.  
  8.  
  9. ##BAR_X=63.0
  10. ##BAR_Y=399.0
  11. BAR_X=64.0
  12. BAR_Y=425.0
  13.  
  14.  
  15.  
  16.  
  17. class BaseProgressBar:
  18.   "Clase base de las barras de progreso de carga"
  19.  
  20.   def __init__(self,total_increments):
  21.     self.total_increments=total_increments
  22.     self.RectSize=(512.0,16.0)
  23.     self.SolidBar=0
  24.     self.hBmpBar=None
  25.  
  26.     if not self.SolidBar:
  27.       Bladex.ReadBitMap("../../Data/Gray_progress_bar.bmp","LoadBarBmp")
  28.       self.hBmpBar=Raster.BmpHandle("LoadBarBmp")
  29.  
  30.  
  31.   def Clear(self):
  32.     pass
  33.  
  34.  
  35.   def BarIncrement(self,n_file,text):
  36.  
  37.     if Raster.ClassIdName()=="B_Direct3DRasterDevice":
  38.       if n_file%10:
  39.         return
  40.  
  41.     str="Loading %s."%(text,)
  42.     percentage=float(n_file)/float(self.total_increments)
  43.     if percentage>1.0:
  44.       percentage=1.0
  45.  
  46.     w,h=Raster.GetSize()
  47.  
  48.     AdjustedRectWidth=self.RectSize[0]*w/640.0
  49.     AdjustedRectHeight=self.RectSize[1]*h/480.0
  50.  
  51.     Raster.Cls(0,0,0)
  52.     Raster.SetAlpha(0.8)
  53.  
  54.     percentage_width=percentage*self.RectSize[0]
  55.  
  56.     AdjustedRectX=BAR_X*w/640.0
  57.     AdjustedRectY=BAR_Y*h/480.0
  58.  
  59.     
  60.     x1=AdjustedRectX
  61.     x2=x1+AdjustedRectWidth
  62.     y1=AdjustedRectY
  63.     y2=AdjustedRectY+AdjustedRectHeight
  64.     Raster.SetPenColor(0,0,0);
  65.     Raster.Rectangle(x1,y1,x2,y2)
  66.  
  67.     if self.SolidBar==1:
  68.       x2=x1+percentage*AdjustedRectWidth
  69.       Raster.SetFillColor(140,220,10);
  70.       Raster.SolidRectangle(x1,y1,x2,y2)
  71.     else:
  72.       Raster.SetPosition(x1,y1)
  73.       Raster.SetPenColor(180,23,44)
  74.       Raster.DrawBitmap(self.hBmpBar,percentage*AdjustedRectWidth,AdjustedRectHeight)
  75.       Raster.SetPosition(0,0)
  76.  
  77.  
  78.     Raster.SysWrite(10,h-25,str,240,240,20)
  79.     Raster.SwapBuffers()
  80.  
  81.  
  82.  
  83.  
  84. class ProgressBar(BaseProgressBar):
  85.   "Clase auxiliar para poner una barra de progreso durante la carga de un nivel"
  86.  
  87.   def __init__(self,total_increments,background_image=None):
  88.     BaseProgressBar.__init__(self,total_increments)
  89.  
  90.     BBLib.ResetnOpenedInputFiles()
  91.     BBLib.SetOnOpenInputFileFunc(self.BarIncrement)
  92.     self.filehook=1
  93.  
  94.     self.imagehook=0
  95.     if background_image:
  96.       back_image=BBLib.B_BitMap24()
  97.       if back_image.ReadFromBMP(background_image):
  98.         w,h=back_image.GetDimension()
  99.         Raster.SetBackgroundImage(w,h,"RGB","Normal","Stretch",back_image.GetData())
  100.         Raster.Cls(0,0,0)
  101.         Raster.SwapBuffers()
  102.         self.imagehook=1
  103.  
  104.  
  105.     Bladex.AddScheduledFunc(0,self.Clear,())
  106.  
  107.  
  108.   def Clear(self):
  109.     BaseProgressBar.Clear(self)
  110.     if self.imagehook:
  111.       Raster.RemoveBackgroundImage()
  112.       self.imagehook=0
  113.  
  114.     if self.filehook:
  115.       BBLib.RemoveOnOpenInputFileFunc()
  116.       self.filehook=0
  117.  
  118.  
  119.   def __del__(self):
  120.     self.Clear()
  121.  
  122.  
  123.  
  124. class AutoProgressBar(BaseProgressBar):
  125.  
  126.   def __init__(self,total_increments):
  127.     BaseProgressBar.__init__(self,total_increments)
  128.     self.CurrentPoint=0
  129.  
  130.  
  131.   def Increment(self,text=""):
  132.     self.CurrentPoint=self.CurrentPoint+1
  133.     self.BarIncrement(self.CurrentPoint,text)
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142. class ECTSProgressBar(ProgressBar):
  143.   def __init__(self,total_increments,background_image=None):
  144.     ProgressBar.__init__(self,total_increments,background_image)
  145.     self.updated=0
  146.  
  147.   def BarIncrement(self,n_file,text):
  148.  
  149.     if n_file>self.total_increments/2 and not self.updated:
  150.       BBLib.RemoveOnOpenInputFileFunc()
  151.       back_image=BBLib.B_BitMap24()
  152.       if back_image.ReadFromBMP("Blade_progress2.bmp"):
  153.         Raster.RemoveBackgroundImage()
  154.         w,h=back_image.GetDimension()
  155.         Raster.SetBackgroundImage(w,h,"RGB","Normal","Stretch",back_image.GetData())
  156.         Raster.Cls(0,0,0)
  157.         Raster.SwapBuffers()
  158.  
  159.       self.updated=1
  160.       BBLib.SetOnOpenInputFileFunc(self.BarIncrement)
  161.  
  162.     ProgressBar.BarIncrement(self,n_file,text)
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169. class DemoProgressBar(ProgressBar):
  170.   def __init__(self,total_increments,background_image=None):
  171.     self.updated=1
  172.     self.segment_size=total_increments/4
  173.     ProgressBar.__init__(self,total_increments,background_image)
  174.  
  175.   def BarIncrement(self,n_file,text):
  176.  
  177.     if Raster.ClassIdName()=="B_Direct3DRasterDevice":
  178.       if n_file%10:
  179.         return
  180.  
  181.     if (n_file>3*self.segment_size and self.updated==3) or (n_file>2*self.segment_size and self.updated==2) or (n_file>self.segment_size and self.updated==1):
  182.       BBLib.RemoveOnOpenInputFileFunc()
  183.       back_image=BBLib.B_BitMap24()
  184.       if back_image.ReadFromBMP("Blade_progress"+`self.updated+1`+".bmp"):
  185.         Raster.RemoveBackgroundImage()
  186.         w,h=back_image.GetDimension()
  187.         Raster.SetBackgroundImage(w,h,"RGB","Normal","Stretch",back_image.GetData())
  188.         Raster.Cls(0,0,0)
  189.         Raster.SwapBuffers()
  190.  
  191.       self.updated=self.updated+1
  192.       BBLib.SetOnOpenInputFileFunc(self.BarIncrement)
  193.  
  194.     ProgressBar.BarIncrement(self,n_file,text)
  195.