From: Dirk M. <di...@us...> - 2004-07-27 18:52:41
|
Update of /cvsroot/freevo/freevo/src/gui/backends/bmovl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25891/backends/bmovl Modified Files: __init__.py screen.py Log Message: support more layer (see README.txt in backends for details Index: screen.py =================================================================== RCS file: /cvsroot/freevo/freevo/src/gui/backends/bmovl/screen.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** screen.py 24 Jul 2004 12:21:06 -0000 1.1 --- screen.py 27 Jul 2004 18:52:30 -0000 1.2 *************** *** 16,19 **** --- 16,22 ---- # ----------------------------------------------------------------------- # $Log$ + # Revision 1.2 2004/07/27 18:52:30 dischi + # support more layer (see README.txt in backends for details + # # Revision 1.1 2004/07/24 12:21:06 dischi # move renderer into backend subdir *************** *** 59,67 **** def __init__(self, renderer): SDLScreen.__init__(self, renderer) ! ! self.layer['content'] = Layer('content', self.renderer, True) ! self.layer['alpha'] = Layer('alpha', self.renderer, True) ! self.layer['bg'] = Layer('bg', self.renderer, True) ! self.complete_bg = self.renderer.screen.convert_alpha() print --- 62,66 ---- def __init__(self, renderer): SDLScreen.__init__(self, renderer) ! self.layer = Layer('content', self, True) print *************** *** 88,103 **** ! def add(self, layer, object): """ Add an object to a specific layer. Hack: remove all images covering the whole screen to test transparency """ ! if object.x1 == 0 and object.y1 == 0 and object.x2 == self.width and \ ! object.y2 == self.height: return ! SDLScreen.add(self, layer, object) ! def show(self): """ Update the screen --- 87,111 ---- ! def add(self, object): """ Add an object to a specific layer. Hack: remove all images covering the whole screen to test transparency """ ! if object.layer == -5: return ! return self.layer.add(object) ! def remove(self, object): ! """ ! Remove an object from the screen ! """ ! try: ! return self.layer.remove(object) ! except: ! pass ! ! ! def update(self): """ Update the screen *************** *** 106,118 **** # only lock s_alpha layer, because only there # are pixel operations (round rectangle) ! self.layer['alpha'].lock() ! ! bg = self.layer['bg'] ! alpha = self.layer['alpha'] ! content = self.layer['content'] # Merge all update_areas # This is very slow, but there are transparency problems otherwise ! update_area = bg.update_rect + alpha.update_rect + content.update_rect if not update_area: --- 114,122 ---- # only lock s_alpha layer, because only there # are pixel operations (round rectangle) ! self.layer.lock() # Merge all update_areas # This is very slow, but there are transparency problems otherwise ! update_area = self.layer.update_rect if not update_area: *************** *** 124,157 **** max(x2, rect[2]), max(y2, rect[3])) ! update_area = [ rect ] ! ! bg.update_rect = update_area ! alpha.update_rect = update_area ! content.update_rect = update_area ! ! bg.screen.fill((0,0,0,0)) ! bg.draw() ! ! alpha.screen.fill((0,0,0,0)) ! alpha.draw() ! ! self.complete_bg.fill((0,0,0,0)) ! # and than blit only the changed parts of the screen ! for x0, y0, x1, y1 in update_area: ! self.complete_bg.blit(bg.screen, (x0, y0), (x0, y0, x1-x0, y1-y0)) ! self.complete_bg.blit(alpha.screen, (x0, y0), (x0, y0, x1-x0, y1-y0)) ! ! content.screen.fill((0,0,0,0)) ! ! for x0, y0, x1, y1 in update_area: ! content.blit(self.complete_bg, (x0, y0), (x0, y0, x1-x0, y1-y0)) ! rect = content.draw()[1] if self.renderer.must_lock: ! self.s_alpha.unlock() blitrect = rect[0], rect[1], rect[2] - rect[0], rect[3] - rect[1] ! surface = content.screen.subsurface(blitrect) try: os.write(self.fifo, 'RGBA32 %d %d %d %d %d %d\n' % \ --- 128,142 ---- max(x2, rect[2]), max(y2, rect[3])) ! update_area = [ rect ] ! self.layer.update_rect = update_area ! self.layer.screen.fill((0,0,0,0)) ! self.layer.draw() if self.renderer.must_lock: ! self.layer.lock() blitrect = rect[0], rect[1], rect[2] - rect[0], rect[3] - rect[1] ! surface = self.layer.screen.subsurface(blitrect) try: os.write(self.fifo, 'RGBA32 %d %d %d %d %d %d\n' % \ Index: __init__.py =================================================================== RCS file: /cvsroot/freevo/freevo/src/gui/backends/bmovl/__init__.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** __init__.py 24 Jul 2004 12:21:06 -0000 1.1 --- __init__.py 27 Jul 2004 18:52:30 -0000 1.2 *************** *** 1,6 **** - # reuse some sdl backend stuff from gui.backends.sdl.renderer import Renderer - from gui.backends.sdl.layer import Layer from gui.backends.sdl.font import Font from gui.backends.sdl.keyboard import Keyboard --- 1,4 ---- |