| | """Abstraction for the platform-specific code in PyOpenGL |
| | |
| | Each supported platform has a module which provides the |
| | specific functionality required to support the base OpenGL |
| | functionality on that platform. These modules are |
| | registered using plugins in the: |
| | |
| | OpenGL.plugin.PlatformPlugin |
| | |
| | objects. To support a new platform you'll need to create |
| | a new PlatformPlugin instance *before* you import |
| | OpenGL.platform . Once you have a working platform |
| | module, please consider contributing it back to the project. |
| | |
| | See baseplatform.BasePlatform for the core functionality |
| | of a platform implementation. See the various platform |
| | specific modules for examples to use when porting. |
| | """ |
| | import os, sys |
| | from OpenGL.plugins import PlatformPlugin |
| |
|
| | def _load( ): |
| | """Load the os.name plugin for the platform functionality""" |
| | key = (os.environ.get( 'PYOPENGL_PLATFORM'), sys.platform,os.name) |
| | plugin = PlatformPlugin.match( key ) |
| | plugin_class = plugin.load() |
| | plugin.loaded = True |
| | |
| | plugin = plugin_class() |
| |
|
| | |
| | plugin.install(globals()) |
| | return plugin |
| |
|
| | _load() |
| |
|
| | def types(resultType,*argTypes): |
| | """Decorator to add returnType, argTypes and argNames to a function""" |
| | def add_types( function ): |
| | """Adds the given metadata to the function, introspects var names from declaration""" |
| | function.resultType = resultType |
| | function.argTypes = argTypes |
| | if hasattr( function, 'func_code' ): |
| | function.argNames = function.func_code.co_varnames |
| | else: |
| | function.argNames = function.__code__.co_varnames |
| | return function |
| | return add_types |
| |
|
| | def unpack_constants( constants, namespace ): |
| | """Create constants and add to the namespace""" |
| | from OpenGL.constant import Constant |
| | for line in constants.splitlines(): |
| | if line and line.split(): |
| | name,value = line.split() |
| | namespace[name] = Constant( name, int(value,16) ) |
| |
|
| | def createFunction( function, dll,extension,deprecated=False, error_checker=None ): |
| | """Allows the more compact declaration format to use the old-style constructor""" |
| | return nullFunction( |
| | function.__name__, |
| | dll or PLATFORM.GL, |
| | resultType = function.resultType, |
| | argTypes = function.argTypes, |
| | doc = None, argNames = function.argNames, |
| | extension = extension, |
| | deprecated = deprecated, |
| | module = function.__module__, |
| | error_checker = error_checker, |
| | ) |
| |
|