[pypy-svn] r54940 - pypy/dist/pypy/translator/goal

cami at codespeak.net cami at codespeak.net
Mon May 19 16:18:45 CEST 2008


Author: cami
Date: Mon May 19 16:18:42 2008
New Revision: 54940

Added:
   pypy/dist/pypy/translator/goal/targetsimplevideo.py
Log:
created simple videotest


Added: pypy/dist/pypy/translator/goal/targetsimplevideo.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/translator/goal/targetsimplevideo.py	Mon May 19 16:18:42 2008
@@ -0,0 +1,92 @@
+from pypy.rlib.rsdl import RSDL, RSDL_helper
+from pypy.rpython.lltypesystem import rffi, lltype
+import py
+
+WIDTH = 200
+HEIGHT = 200
+
+def entry_point(argv=None):
+    RSDL.Init(RSDL.INIT_VIDEO) >= 0
+    screen = RSDL.SetVideoMode(WIDTH, HEIGHT, 32, 0)
+    event = lltype.malloc(RSDL.Event, flavor='raw')
+    try:
+        while True:
+            ok = RSDL.WaitEvent(event)
+            assert rffi.cast(lltype.Signed, ok) == 1
+            c_type = rffi.getintfield(event, 'c_type')
+            if c_type == RSDL.KEYDOWN:
+                p = rffi.cast(RSDL.KeyboardEventPtr, event)
+                if rffi.getintfield(p.c_keysym, 'c_sym') == RSDL.K_ESCAPE:
+                    print 'Escape key'
+                    break
+            update_screen(screen)
+    finally:
+        lltype.free(event, flavor='raw')
+        
+# -----------------------------------------------------------------------------
+
+def chess(screen, cola, colb):
+    for i in xrange(WIDTH):
+        for j in xrange(HEIGHT):
+            if (i+j) % 2:
+                c = cola
+            else:
+                c = colb
+            RSDL_helper.set_pixel(screen, i, j, c)
+                
+def white(screen, cola, colb):
+    for i in xrange(WIDTH):
+        for j in xrange(HEIGHT):
+            RSDL_helper.set_pixel(screen, i, j, colb)
+                
+def black(screen, cola, colb):
+    for i in xrange(WIDTH):
+        for j in xrange(HEIGHT):
+            RSDL_helper.set_pixel(screen, i, j, cola)
+                
+def stripes_v(screen, cola, colb):
+    for i in xrange(WIDTH):
+        for j in xrange(HEIGHT):
+            k = j*WIDTH + i
+            if k % 2:
+                c = cola
+            else:
+                c = colb
+            RSDL_helper.set_pixel(screen, i, j, c)
+                
+def stripes_m(screen, cola, colb):
+    for j in xrange(WIDTH):
+        for i in xrange(HEIGHT):
+            k = j*WIDTH + i
+            if k % 2:
+                c = cola
+            else:
+                c = colb
+            RSDL_helper.set_pixel(screen, i, j, c)
+            
+
+# -----------------------------------------------------------------------------
+
+pattern = (chess, white, black, stripes_v, stripes_m)
+current_pattern_id = 0
+def update_screen(screen):
+    fmt = self.screen.c_format
+    white = RSDL.MapRGB(fmt, 255, 255, 255)
+    black = RSDL.MapRGB(fmt, 0, 0, 0)
+    RSDL.LockSurface(self.screen)
+    pattern[current_pattern_id % len(pattern)](screen, black, white)
+    RSDL.UnlockSurface(self.screen)
+    RSDL.Flip(self.screen)
+    current_pattern_id += 1
+    
+    
+# -----------------------------------------------------------------------------
+
+def target(*args):
+    return entry_point, None
+
+
+if __name__ == '__main__':
+    entry_point()
+
+



More information about the Pypy-commit mailing list