| | """Wrapper/Implementation of the GLU quadrics object for PyOpenGL""" |
| | from OpenGL.raw import GLU as _simple |
| | from OpenGL.platform import createBaseFunction, PLATFORM |
| | import ctypes |
| |
|
| | class GLUQuadric( _simple.GLUquadric ): |
| | """Implementation class for GLUQuadric classes in PyOpenGL""" |
| | FUNCTION_TYPE = PLATFORM.functionTypeFor(PLATFORM.GLU) |
| | CALLBACK_TYPES = { |
| | |
| | _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 |
| | PLATFORM.GLU.gluQuadricCallback( self, which, cCallback ) |
| | |
| | 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 ) |
| |
|
| | |
| | gluNewQuadric = createBaseFunction( |
| | 'gluNewQuadric', dll=PLATFORM.GLU, resultType=ctypes.POINTER(GLUQuadric), |
| | argTypes=[], |
| | doc="""gluNewQuadric( ) -> GLUQuadric |
| | |
| | Create a new GLUQuadric object""", |
| | argNames=[], |
| | ) |
| |
|
| | __all__ = ( |
| | 'gluNewQuadric', |
| | 'gluQuadricCallback', |
| | 'GLUQuadric', |
| | ) |
| |
|