Thread: [Ocemp-CVS] ocempgui/ocempgui/widgets BaseWidget.py, 1.74, 1.75 Renderer.py, 1.80, 1.81
Status: Beta
Brought to you by:
marcusva
From: Marcus v. A. <mar...@us...> - 2006-12-22 13:17:18
|
Update of /cvsroot/ocemp/ocempgui/ocempgui/widgets In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv22295/ocempgui/widgets Modified Files: BaseWidget.py Renderer.py Log Message: Added alpha transparency support to the BaseWidget class. Settting the alpha value of the FaderSurface will always cause applying it, not only on changes. Index: Renderer.py =================================================================== RCS file: /cvsroot/ocemp/ocempgui/ocempgui/widgets/Renderer.py,v retrieving revision 1.80 retrieving revision 1.81 diff -u -d -r1.80 -r1.81 --- Renderer.py 20 Nov 2006 15:22:09 -0000 1.80 +++ Renderer.py 22 Dec 2006 13:17:17 -0000 1.81 @@ -544,7 +544,6 @@ layers = filter (None, self._layers.values ()) for layer in layers: layer[2].emit_all (Event (SIG_SCREENCHANGED, screen)) - self.refresh () def set_timer (self, timer=40): @@ -602,7 +601,7 @@ self.screen.fill (self.color) self._background = self.screen.copy () - def create_screen (self, width, height, flags=0): + def create_screen (self, width, height, flags=0, depth=0): """R.create_screen (...) -> None Creates a new pygame window for the renderer. @@ -623,7 +622,7 @@ raise ValueError ("width and height must be positive integers > 0") self.support_resize = False # Suspend VIDEORESIZE events. - self.screen = display.set_mode ((width, height), flags) + self.screen = display.set_mode ((width, height), flags, depth) self.support_resize = True # Enable VIDEORESIZE events. self.__flags = flags self.refresh () @@ -868,6 +867,7 @@ Redraws all widgets, that intersect with the passed rectangles and raises the SIG_UPDATED event on demand. """ + unique = [] append = unique.append @@ -876,6 +876,7 @@ if rect not in unique: append (rect) + bg = self._background blit = self.screen.blit layers = self._layers keys = self._layers.keys () @@ -892,8 +893,11 @@ if intersect.size != (0, 0): append ((w, intersect)) - # We have the interstion list, blit it. + # We have the intersection list, blit it. redraw.sort (lambda x, y: cmp (x[0].depth, y[0].depth)) + + for w, i in redraw: + blit (bg, i.topleft, ((i.left - w.left, i.top - w.top), i.size)) for w, i in redraw: blit (w.image, i.topleft, ((i.left - w.left, i.top - w.top), i.size)) Index: BaseWidget.py =================================================================== RCS file: /cvsroot/ocemp/ocempgui/ocempgui/widgets/BaseWidget.py,v retrieving revision 1.74 retrieving revision 1.75 diff -u -d -r1.74 -r1.75 --- BaseWidget.py 16 Sep 2006 12:36:50 -0000 1.74 +++ BaseWidget.py 22 Dec 2006 13:17:17 -0000 1.75 @@ -269,6 +269,7 @@ self._rect = Rect (0, 0, 0, 0) self._oldrect = Rect (0, 0, 0, 0) + self._opacity = 255 self._style = None self._index = 0 self._state = STATE_NORMAL @@ -679,6 +680,17 @@ self._state = state self.dirty = True + def set_opacity (self, opacity): + """W.set_opacity (...) -> None + + Sets the opacity of the widget. + """ + if type (opacity) != int: + raise TypeError ("opacity must be an integer") + dirty = self._opacity != opacity + self._opacity = opacity + self.update () + # DEPRECATED def set_event_area (self, area): """W.set_event_area (...) -> None @@ -775,7 +787,6 @@ # Current surface for blits. self._image = Surface ((rect.width, rect.height)) self._image.blit (self._bg, (0, 0)) - topleft = self._rect.topleft self._rect = rect self._rect.topleft = topleft @@ -824,6 +835,7 @@ blit (self._bg, rect, rect) blit (child.image, child.rect) + self._image.set_alpha (self.opacity) # If a parent's available, reassign the child rects, so that # they point to the absolute position on the widget and build # one matching them all for an update. @@ -847,6 +859,7 @@ # Draw the widget. self.draw () + self._image.set_alpha (self.opacity) if self.parent != None: resize = oldrect != self._rect self.parent.update (children={ self : oldrect }, resize=resize) @@ -957,3 +970,6 @@ entered = property (lambda self: self._entered, lambda self, var: self.set_entered (var), doc = "Indicates, whether the widget is entered.") + opacity = property (lambda self: self._opacity, + lambda self, var: self.set_opacity (var), + doc = "The opacity of the widget.") |