supporting buffer as array type in pyopengl 3.0.0

"renaud blanch" <[email protected]> Mon, 23 Jun 2008 12:43:41 +0200
Newsgroups gmane.comp.python.opengl.devel
Message-ID <[email protected]>
hi list,
i'm using pycairo to generate pictures.
it uses the python buffer type to return the raw data.
it would be great if functions such as DrawPixels could handle such array
object.
attached is a small patch against PyOpenGL-3.0.0b3 that modifies
OpenGL/arrays/strings.py to make StringHandler also handle buffer objects.
it works for my use case, but it may not be the best way to handle buffer.
any suggestion ?

if this patch is reasonable, what is the way to push it into the PyOpenGL
distribution ?

thanks,
renaud

diff -ru PyOpenGL-3.0.0b3/OpenGL/arrays/strings.py
PyOpenGL-3.0.0b3-mine/OpenGL/arrays/strings.py
--- PyOpenGL-3.0.0b3/OpenGL/arrays/strings.py    2008-06-13
18:17:52.000000000 +0200
+++ PyOpenGL-3.0.0b3-mine/OpenGL/arrays/strings.py    2008-06-20
11:18:06.000000000 +0200
@@ -7,7 +7,7 @@

class StringHandler( formathandler.FormatHandler ):
    """String-specific data-type handler for OpenGL"""
-    HANDLED_TYPES = (str, )
+    HANDLED_TYPES = (str, buffer)
    from_param = staticmethod( dataPointer )
    dataPointer = staticmethod( dataPointer )
    def zeros( self, dims, typeCode=None ):
@@ -31,6 +31,8 @@
        """Convert given value to an array value of given typeCode"""
        if isinstance( value, str ):
            return value
+        elif isinstance( value, buffer ):
+            return str(value)
        elif hasattr( value, 'tostring' ):
            return value.tostring()
        elif hasattr( value, 'raw' ):

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php

_______________________________________________
PyOpenGL Homepage
http://pyopengl.sourceforge.net
_______________________________________________
PyOpenGL-Devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pyopengl-devel
PyOpenGL-3.0.0b3-bufferhandler.patch (application/octet-stream, 869 B)
diff -ru PyOpenGL-3.0.0b3/OpenGL/arrays/strings.py PyOpenGL-3.0.0b3-mine/OpenGL/arrays/strings.py
--- PyOpenGL-3.0.0b3/OpenGL/arrays/strings.py	2008-06-13 18:17:52.000000000 +0200
+++ PyOpenGL-3.0.0b3-mine/OpenGL/arrays/strings.py	2008-06-20 11:18:06.000000000 +0200
@@ -7,7 +7,7 @@
 
 class StringHandler( formathandler.FormatHandler ):
 	"""String-specific data-type handler for OpenGL"""
-	HANDLED_TYPES = (str, )
+	HANDLED_TYPES = (str, buffer)
 	from_param = staticmethod( dataPointer )
 	dataPointer = staticmethod( dataPointer )
 	def zeros( self, dims, typeCode=None ):
@@ -31,6 +31,8 @@
 		"""Convert given value to an array value of given typeCode"""
 		if isinstance( value, str ):
 			return value
+		elif isinstance( value, buffer ):
+			return str(value)
 		elif hasattr( value, 'tostring' ):
 			return value.tostring()
 		elif hasattr( value, 'raw' ):