[pypy-commit] lang-smalltalk default: (tfel, lwassermann): added 16 Bit BitBlt Form

lwassermann noreply at buildbot.pypy.org
Mon Apr 22 17:19:08 CEST 2013


Author: Lars Wassermann <lars.wassermann at gmail.com>
Branch: 
Changeset: r315:04d66459eb57
Date: 2013-04-22 17:16 +0200
http://bitbucket.org/pypy/lang-smalltalk/changeset/04d66459eb57/

Log:	(tfel, lwassermann): added 16 Bit BitBlt Form

diff --git a/spyvm/model.py b/spyvm/model.py
--- a/spyvm/model.py
+++ b/spyvm/model.py
@@ -764,6 +764,8 @@
     def create(space, w_class, size, depth, display):
         if depth == 1:
             return W_DisplayBitmap1Bit(space, w_class, size, depth, display)
+        elif depth == 16:
+            return W_DisplayBitmap32Bit(space, w_class, size, depth, display)
         elif depth == 32:
             return W_DisplayBitmap32Bit(space, w_class, size, depth, display)
         else:
@@ -825,6 +827,22 @@
             mask >>= 1
             pos += 1
 
+class W_DisplayBitmap16Bit(W_DisplayBitmap):
+    def getword(self, n):
+        return self._real_depth_buffer[n]
+
+    @jit.unroll_safe
+    def setword(self, n, word):
+        self._real_depth_buffer[n] = word
+        pos = n * NATIVE_DEPTH / 16
+        mask = 0xf
+        for i in range(2):
+            pixel = 0
+            for j in range(4):
+                pixel |= r_uint(word & mask << (8 * j + 4))
+                mask <<= 4
+            self.pixelbuffer[pos + i] = pixel
+
 class W_DisplayBitmap32Bit(W_DisplayBitmap):
     def getword(self, n):
         return self._real_depth_buffer[n]


More information about the pypy-commit mailing list