home *** CD-ROM | disk | FTP | other *** search
Wrap
import BBLib import Raster import Bladex ##BAR_X=63.0 ##BAR_Y=399.0 BAR_X=64.0 BAR_Y=425.0 class BaseProgressBar: "Clase base de las barras de progreso de carga" def __init__(self,total_increments): self.total_increments=total_increments self.RectSize=(512.0,16.0) self.SolidBar=0 self.hBmpBar=None if not self.SolidBar: Bladex.ReadBitMap("../../Data/Gray_progress_bar.bmp","LoadBarBmp") self.hBmpBar=Raster.BmpHandle("LoadBarBmp") def Clear(self): pass def BarIncrement(self,n_file,text): if Raster.ClassIdName()=="B_Direct3DRasterDevice": if n_file%10: return str="Loading %s."%(text,) percentage=float(n_file)/float(self.total_increments) if percentage>1.0: percentage=1.0 w,h=Raster.GetSize() AdjustedRectWidth=self.RectSize[0]*w/640.0 AdjustedRectHeight=self.RectSize[1]*h/480.0 Raster.Cls(0,0,0) Raster.SetAlpha(0.8) percentage_width=percentage*self.RectSize[0] AdjustedRectX=BAR_X*w/640.0 AdjustedRectY=BAR_Y*h/480.0 x1=AdjustedRectX x2=x1+AdjustedRectWidth y1=AdjustedRectY y2=AdjustedRectY+AdjustedRectHeight Raster.SetPenColor(0,0,0); Raster.Rectangle(x1,y1,x2,y2) if self.SolidBar==1: x2=x1+percentage*AdjustedRectWidth Raster.SetFillColor(140,220,10); Raster.SolidRectangle(x1,y1,x2,y2) else: Raster.SetPosition(x1,y1) Raster.SetPenColor(180,23,44) Raster.DrawBitmap(self.hBmpBar,percentage*AdjustedRectWidth,AdjustedRectHeight) Raster.SetPosition(0,0) Raster.SysWrite(10,h-25,str,240,240,20) Raster.SwapBuffers() class ProgressBar(BaseProgressBar): "Clase auxiliar para poner una barra de progreso durante la carga de un nivel" def __init__(self,total_increments,background_image=None): BaseProgressBar.__init__(self,total_increments) BBLib.ResetnOpenedInputFiles() BBLib.SetOnOpenInputFileFunc(self.BarIncrement) self.filehook=1 self.imagehook=0 if background_image: back_image=BBLib.B_BitMap24() if back_image.ReadFromBMP(background_image): w,h=back_image.GetDimension() Raster.SetBackgroundImage(w,h,"RGB","Normal","Stretch",back_image.GetData()) Raster.Cls(0,0,0) Raster.SwapBuffers() self.imagehook=1 Bladex.AddScheduledFunc(0,self.Clear,()) def Clear(self): BaseProgressBar.Clear(self) if self.imagehook: Raster.RemoveBackgroundImage() self.imagehook=0 if self.filehook: BBLib.RemoveOnOpenInputFileFunc() self.filehook=0 def __del__(self): self.Clear() class AutoProgressBar(BaseProgressBar): def __init__(self,total_increments): BaseProgressBar.__init__(self,total_increments) self.CurrentPoint=0 def Increment(self,text=""): self.CurrentPoint=self.CurrentPoint+1 self.BarIncrement(self.CurrentPoint,text) class ECTSProgressBar(ProgressBar): def __init__(self,total_increments,background_image=None): ProgressBar.__init__(self,total_increments,background_image) self.updated=0 def BarIncrement(self,n_file,text): if n_file>self.total_increments/2 and not self.updated: BBLib.RemoveOnOpenInputFileFunc() back_image=BBLib.B_BitMap24() if back_image.ReadFromBMP("Blade_progress2.bmp"): Raster.RemoveBackgroundImage() w,h=back_image.GetDimension() Raster.SetBackgroundImage(w,h,"RGB","Normal","Stretch",back_image.GetData()) Raster.Cls(0,0,0) Raster.SwapBuffers() self.updated=1 BBLib.SetOnOpenInputFileFunc(self.BarIncrement) ProgressBar.BarIncrement(self,n_file,text) class DemoProgressBar(ProgressBar): def __init__(self,total_increments,background_image=None): self.updated=1 self.segment_size=total_increments/4 ProgressBar.__init__(self,total_increments,background_image) def BarIncrement(self,n_file,text): if Raster.ClassIdName()=="B_Direct3DRasterDevice": if n_file%10: return 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): BBLib.RemoveOnOpenInputFileFunc() back_image=BBLib.B_BitMap24() if back_image.ReadFromBMP("Blade_progress"+`self.updated+1`+".bmp"): Raster.RemoveBackgroundImage() w,h=back_image.GetDimension() Raster.SetBackgroundImage(w,h,"RGB","Normal","Stretch",back_image.GetData()) Raster.Cls(0,0,0) Raster.SwapBuffers() self.updated=self.updated+1 BBLib.SetOnOpenInputFileFunc(self.BarIncrement) ProgressBar.BarIncrement(self,n_file,text)