From fa5bf40bfe796d33480a09d9e6400502552d66f7 Mon Sep 17 00:00:00 2001
From: pin <pin@fe552daf-6dbe-4428-90eb-1537e0879342>
Date: Fri, 1 Mar 2013 12:29:37 +0000
Subject: [PATCH 1/1] =?utf8?q?Impl=C3=A9mentation=20plus=20propre=20avec?=
 =?utf8?q?=20une=20sous-classe=20de=20Sprite.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@417 fe552daf-6dbe-4428-90eb-1537e0879342
---
 src/kinect/pygamedisplay.py         | 18 ++++++++++++++++++
 src/minwii/widgets/playingscreen.py | 15 ++++-----------
 2 files changed, 22 insertions(+), 11 deletions(-)

diff --git a/src/kinect/pygamedisplay.py b/src/kinect/pygamedisplay.py
index 82621ea..fbf0b77 100755
--- a/src/kinect/pygamedisplay.py
+++ b/src/kinect/pygamedisplay.py
@@ -38,6 +38,24 @@ class RGB :
         return self.context.wait_one_update_all(self.imgGene)
 
 
+class RGBSprite(pygame.sprite.DirtySprite, RGB) :
+    
+    def __init__(self, alpha=255) :
+        pygame.sprite.DirtySprite.__init__(self)
+        self.dirty = 2 # toujours dirty !
+        RGB.__init__(self)
+
+        self.image = pygame.Surface((640, 480))
+        self._regular = pygame.Surface((640, 480))
+        self.image.set_alpha(alpha)
+        self.rect = pygame.Rect((0, 0), (0, 0))
+    
+    def update(self) :
+        RGB.update(self)
+        img = self.capture()
+        self._regular.blit(img, (0, 0))
+        self.image.blit(pygame.transform.flip(self._regular, True, False), (0, 0))
+
     
 def main() :
     pygame.init()
diff --git a/src/minwii/widgets/playingscreen.py b/src/minwii/widgets/playingscreen.py
index 5829a4e..f6038fd 100755
--- a/src/minwii/widgets/playingscreen.py
+++ b/src/minwii/widgets/playingscreen.py
@@ -45,11 +45,11 @@ class PlayingScreenBase(pygame.sprite.LayeredDirty, EventHandlerMixin) :
         self.columns = {}
         self._initColumns()
         self._running = False
-        self.draw(pygame.display.get_surface())
+        self.kinectRgb = kinect.RGBSprite(alpha=128)
+        self.add(self.kinectRgb, layer=CURSOR_LAYER)
         self._initCursor()
+        self.draw(pygame.display.get_surface())
         
-        self.kinectRgb = kinect.RGB()
-        self.kinectRgbSur = pygame.Surface((640, 480))
     
     def _initRects(self) :
         """ création des espaces réservés pour
@@ -99,16 +99,9 @@ class PlayingScreenBase(pygame.sprite.LayeredDirty, EventHandlerMixin) :
         pygame.mouse.set_visible(False)
         while self._running :
             EventDispatcher.dispatchEvents()
+            self.kinectRgb.update()
             dirty = self.draw(pygame.display.get_surface())
             pygame.display.update(dirty)
-            
-            self.kinectRgb.update()
-            rgbImg = self.kinectRgb.capture()
-            self.kinectRgbSur.blit(rgbImg, (0, 0))
-            screen = pygame.display.get_surface()
-            screen.blit(pygame.transform.flip(self.kinectRgbSur, True, False), (0, 0))
-            pygame.display.flip()
-            
             clock.tick(FRAMERATE)
     
     def stop(self) :
-- 
2.20.1