jexzeb's picture
Upload folder using huggingface_hub
b6068b4
"""GLE exceptional functions (specialised signatures"""
from OpenGL.raw import GLE as raw
from OpenGL.raw.GLE import annotations as _simple
from OpenGL import wrapper, arrays
class _lengthOfArgname( object ):
"""Calculates the length of a given argname over a divisor value"""
def __init__( self, arrayName, divisor, arrayType = arrays.GLdoubleArray ):
self.arrayName = arrayName
self.divisor = divisor
self.arrayType = arrayType
def finalise( self, wrapper ):
self.arrayIndex = wrapper.pyArgIndex( self.arrayName )
def __call__( self, pyArgs, index, wrappedOperation ):
"""Get the length of pyArgs[2], a glDoubleArray"""
return self.arrayType.arraySize( pyArgs[self.arrayIndex] )//self.divisor
def _baseWrap( base, lengthName='ncp', contourName='contour', divisor=2 ):
"""Do the basic wrapping operation for a GLE function"""
return wrapper.wrapper( base ).setPyConverter(
lengthName,
).setCConverter(
lengthName, _lengthOfArgname( contourName, divisor, arrays.GLdoubleArray ),
)
gleLathe = _baseWrap( _simple.gleLathe )
glePolyCone = _baseWrap( _simple.glePolyCone, 'npoints', 'point_array', 3)
glePolyCylinder = _baseWrap( _simple.glePolyCylinder, 'npoints', 'point_array', 3)
gleScrew = _baseWrap( _simple.gleScrew )
gleSpiral = _baseWrap( _simple.gleSpiral )
gleExtrusion = _baseWrap(
_baseWrap( _simple.gleExtrusion ),
'npoints', 'point_array', 3
)
gleSuperExtrusion = _baseWrap(
_baseWrap( _simple.gleSuperExtrusion ),
'npoints', 'point_array', 3
)
gleTwistExtrusion = _baseWrap(
_baseWrap( _simple.gleTwistExtrusion ),
'npoints', 'point_array', 3
)