Viewing file: quadrics.py (1.91 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
"""Wrapper/Implementation of the GLU quadrics object for PyOpenGL""" from OpenGL.raw import GLU as simple from OpenGL.platform import GLU,createBaseFunction, PLATFORM import ctypes
class GLUQuadric( simple.GLUquadric ): """Implementation class for GLUQuadric classes in PyOpenGL""" FUNCTION_TYPE = PLATFORM.functionTypeFor(PLATFORM.GLU) CALLBACK_TYPES = { # mapping from "which" GLU enumeration to a ctypes function type simple.GLU_ERROR : FUNCTION_TYPE( None, simple.GLenum ) } def addCallback( self, which, function ): """Register a callback for the quadric object At the moment only GLU_ERROR is supported by OpenGL, but we allow for the possibility of more callbacks in the future... """ callbackType = self.CALLBACK_TYPES.get( which ) if not callbackType: raise ValueError( """Don't have a registered callback type for %r"""%( which, ) ) if not isinstance( function, callbackType ): cCallback = callbackType( function ) else: cCallback = function GLU.gluQuadricCallback( self, which, cCallback ) # XXX catch errors! if getattr( self, 'callbacks', None ) is None: self.callbacks = {} self.callbacks[ which ] = cCallback return cCallback GLUquadric = GLUQuadric
def gluQuadricCallback( quadric, which=simple.GLU_ERROR, function=None ): """Set the GLU error callback function""" return quadric.addCallback( which, function )
# Override to produce instances of the sub-class... gluNewQuadric = createBaseFunction( 'gluNewQuadric', dll=GLU, resultType=ctypes.POINTER(GLUQuadric), argTypes=[], doc="""gluNewQuadric( ) -> GLUQuadric Create a new GLUQuadric object""", argNames=[], )
__all__ = ( 'gluNewQuadric', 'gluQuadricCallback', 'GLUQuadric', )
|